2014-04-18 63 views
0

我正在使用服務器進程來處理程序中的共享內存。使用帶有Value()的Python服務器進程管理器()

manager = multiprocessing.Manager() 
tasksRemaining = manager.list() 
sampleFileList = manager.list() 
sortedSamples = manager.Value(c_int) 

我在嘗試聲明sortedSamples如果出現以下錯誤:在https://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes

Traceback (most recent call last): 
File "/usr/lib/python2.7/multiprocessing/managers.py", line 207, in handle_request 
result = func(c, *args, **kwds) 
File "/usr/lib/python2.7/multiprocessing/managers.py", line 386, in create 
obj = callable(*args, **kwds) 
TypeError: __init__() takes at least 3 arguments (2 given) 

根據該文件,經理()支持列表,字典,命名空間,鎖,RLOCK,信號燈,BoundedSemaphore,條件,事件,隊列,值和數組。

每當我做這個經理之外,它工作正常,如:

sortedSamples = multiprocessing.Value(c_int) 

出了什麼問題?

回答

0

看來你使用管理器時,你好像需要提供實際價值,以及:

值(類型代碼,值)創建一個可寫值 屬性的對象,並返回一個代理吧\

(見SyncManager的文檔)

嘗試做如:

value = manager.Value('i', 0)