我有一个包含大量不同属性(包括几个字典)的类。当我将一个类的实例传递给一个新进程时,所有数值看起来都正确传入,但类对象中的任何字典都将被清空。Python传递字典在多处理中处理
这里有一个简单的测试,我做了演示我的问题:
from multiprocessing import Process
class State:
a = 0
b = {}
def f(s, i):
print "f:", s.a, s.b
def main():
state = State()
state.a = 11
state.b['testing'] = 12
print "Main:", state.a, state.b
ps = []
for i in range(1):
p = Process(target=f, args=(state, i))
p.start() # Do the work
ps.append(p)
for p in ps:
p.join()
if __name__ == '__main__':
main()
我希望可以将输出为
Main: 11 {'testing': 12}
f: 11 {'testing': 12}
而是我得到
Main: 11 {'testing': 12}
f: 11 {}
当我测试您的示例时,我会得到您的预期输出。 – zeekay
等什么?我在Windows 7上使用Python 2.6.6,你呢? :( – numegil
OS X 10.7.1,Python 2.7.1。 – zeekay