我正在使用服务器进程来处理程序中的共享内存。
manager = multiprocessing.Manager()
tasksRemaining = manager.list()
sampleFileList = manager.list()
sortedSamples = manager.Value(c_int)
我在尝试声明sortedSamples时遇到以下错误:
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)
根据上的文件https://docs.python.org/2/library/multiprocessing.html#sharing-进程之间的状态,Manager()支持列表、dict、Namespace、Lock、RLock、Semaphore、BoundedSemaphor、Condition、Event、Queue、Value和Array。
每当我在经理之外做这件事时,它都很好,比如:
sortedSamples = multiprocessing.Value(c_int)
问题出在哪里?
当您使用管理器时,似乎还需要提供实际值:
Value(typecode,Value)创建具有可写值的对象属性并返回其代理。\
(请参阅SyncManager的文档)
尝试做例如:
value = manager.Value('i', 0)