threading ライブラリと Queue ライブラリを使用してスレッドを実行する場合、スレッドの run() 関数でオブジェクトを作成しています。クラスが次のように開始するとしましょう。
class Test():
def __init__(self, dictionary={}):
self.dict = dictionary
別のスレッドで辞書にアクセスしようとすると、Python が辞書のインスタンスを 1 つだけ作成しているように見えます。これがスレッドクラスです。私はこれらのうちの2つを始めました:
class ThreadTest(threading.Thread):
def run(self):
while True:
// interact with Queue items
obj = Test()
print "%s - %s" % (self.name, id(obj.dict))
queue.task_done()
そして出力:
Thread-1 - 19219616
Thread-2 - 19219616
Test クラスが 2 回作成されているため、これは非常に紛らわしいですが、同じ辞書を共有しています。
この場合、辞書の新しいインスタンスを作成する方法はありますか?