我正在使用服务器进程处理程序中的共享内存。
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-state-between-processes的文档,Manager()支持list,dict,Namespace,Lock,RLock,Semaphore,BoundedSemaphore,Condition,Event,Queue,Value和Array。
每当我在经理之外这样做时,它都可以正常工作,例如:
sortedSamples = multiprocessing.Value(c_int)
什么似乎是问题?
答案 0 :(得分:0)
似乎当你使用经理时,你也需要提供实际价值:
Value(typecode,value)创建具有可写值的对象 属性并为其返回代理。\
(请参阅SyncManager)
的文档尝试做例如:
value = manager.Value('i', 0)