我在test.py
中有以下代码:
manager = multiprocessing.Manager()
cache = manager.dict()
class Test:
def __init__(self):
pass
如果我试图将对象插入另一个文件的缓存中,例如
from test import *
cache[1] = 1 #this works
cache[2] = Test() #this fails/hangs
为什么第二种情况失败/挂起?是否可以将对象插入manager.dict()?
编辑:挂在Linux上,但在Windows上工作。 Python 3.7.3
答案 0 :(得分:0)
使用普通词典更新您的manager.dict()。
tests = {}
test = test()
tests[test.name] = test
# insert other tests in the normal dictionary
obj = multiprocessing.Manager()
obj_tests = obj.dict()
obj_tests.update(tests)
答案 1 :(得分:0)
我认为Manager
首先需要start
()(或通过with
“输入”),即元素设置代码正在等待关联服务器的响应进程,但从未得到响应,因此挂起。无论如何,在Linux下,我远离Windows,所以不想对这种情况发表评论。
您发布的代码的简单解决方法是:
from test import manager, cache, Test
with manager:
cache[1] = 1
cache[2] = Test()
(一般不建议使用import *
)
但是我想您可能想做的比这更多,所以将涉及更多的修复程序。