我在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
为什么第二种情况失败/挂起?是否可以将对象插入管理器.dict((?
编辑:挂在Linux上,但适用于Windows。蟒蛇 3.7.3
用普通字典更新你的 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)
我认为Manager
需要先start
((ed(或通过with
"输入"(,即元素设置代码正在等待来自关联服务器进程的响应,但从未得到响应,因此挂起。 无论如何,在Linux下,我远离Windows,所以不想评论这种情况。
对于您发布的代码,简单的修复是:
from test import manager, cache, Test
with manager:
cache[1] = 1
cache[2] = Test()
(通常不鼓励使用import *
(
但我想你可能想做的不止这些,所以修复会更复杂。