使用带有Value()的Python Server Process Manager()

时间:2014-04-18 13:38:19

标签: python multiprocessing

我正在使用服务器进程处理程序中的共享内存。

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)

什么似乎是问题?

1 个答案:

答案 0 :(得分:0)

似乎当你使用经理时,你也需要提供实际价值:

  

Value(typecode,value)创建具有可写值的对象   属性并为其返回代理。\

(请参阅SyncManager

的文档

尝试做例如:

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