我有两个进程(见样例代码),每个进程都试图访问一个线程本地对象。我希望下面的代码打印出"a"和"b"(以任何顺序)。但实际上,我得到的是"a"和"a"。当我启动全新的进程时,我该如何优雅且可靠地重置线程本地对象?
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 时,它按预期工作。