それぞれが threading.local オブジェクトにアクセスしようとする 2 つのプロセス (サンプル コードを参照) があります。以下のコードは、「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()
編集: 参考までに、multiprocessing.Process の代わりに threading.Thread を使用すると、期待どおりに動作します。