相关疑难解决方法(0)

在Python进程之间共享复杂对象?

我有一个相当复杂的Python对象,我需要在多个进程之间共享.我使用启动这些过程multiprocessing.Process.当我分享一个对象multiprocessing.Queue,并multiprocessing.Pipe在其中,他们共享就好了.但是当我尝试与其他非多处理模块对象共享一个对象时,似乎Python会分叉这些对象.真的吗?

我尝试使用multiprocessing.Value.但我不确定应该是什么类型的?我的对象类叫做MyClass.但是当我尝试时multiprocess.Value(MyClass, instance),它失败了:

TypeError: this type has no size

知道发生了什么事吗?

python process sharing multiprocessing

39
推荐指数
4
解决办法
6万
查看次数

multiprocessing.Manager 嵌套共享对象不适用于队列

模块状态的 Python 文档multiprocessing

版本 3.6 中的更改:共享对象可以嵌套。例如,共享容器对象(例如共享列表)可以包含其他共享对象,这些对象都将由SyncManager.

这确实适用于listdictQueue但是,如果我尝试在共享内创建共享dict,则会收到错误:

>>> from multiprocessing import Manager
>>> m = Manager()
>>> d = m.dict()
>>> d['a'] = m.list()
>>> d['b'] = m.dict()
>>> d['c'] = m.Queue()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 2, in __setitem__
  File "/usr/lib/python3.6/multiprocessing/managers.py", line 772, in _callmethod
    raise convert_to_error(kind, result)
multiprocessing.managers.RemoteError: 
---------------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.6/multiprocessing/managers.py", …
Run Code Online (Sandbox Code Playgroud)

python queue memory-management process multiprocessing

5
推荐指数
1
解决办法
2227
查看次数