一連のスレッドを作成し、プログラムを実行してスレッドを使用してキューからタスクを実行し、各スレッドから何かを返すスクリプトがあります。これらのうち正常に返された数をカウントしたいので、変数「successful = 0」を設定し、キューがタスクが正常に完了したことを報告するたびにそれをインクリメントします。
ただし、「UnboundLocalError:ローカル変数'successful'が割り当て前に参照されています」というメッセージが表示されます。
どうしたの?
次にいくつかのサンプルコードを示します。
successful = 0
q = Queue(200)
for i in range(100):
t=Thread(target=foo)
t.daemon=True
t.start()
def foo():
while True:
task=q.get()
#do some work
print task
successful+=1 # triggers an error
q.task_done()
for i in range(100):
q.put("Foo")
q.join()
print successful