我有两个进程(参见示例代码),每个进程都尝试访问一个 threading.local 对象。我希望下面的代码打印“a”和“b”(以任意顺序)。相反,我得到“a”和“a”。当我启动全新的进程时,如何优雅而稳健地重置 threading.local 对象?
import threading
import multiprocessing
l = threading.local()
l.x = 'a'
def f():
print getattr(l, 'x', 'b')
multiprocessing.Process(target=f).start()
f()
编辑:作为参考,当我使用 threading.Thread 而不是 multiprocessing.Process 时,它按预期工作。