将Python Server Process Manager()与Value()一起使用



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

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)

相关内容

最新更新