スレッディングとキューを使用するプログラムを使用している場合、どのようにして実行を停止する例外が発生しますか?ここでは、ctrl-c(基本的にpythonのドキュメントからリッピング)で停止することはできませんプログラムの例です。スレッドとキューを使用しているときに例外を処理するにはどうすればよいですか?
from threading import Thread
from Queue import Queue
from time import sleep
def do_work(item):
sleep(0.5)
print "working" , item
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
q = Queue()
num_worker_threads = 10
for i in range(num_worker_threads):
t = Thread(target=worker)
# t.setDaemon(True)
t.start()
for item in range(1, 10000):
q.put(item)
q.join() # block until all tasks are done
したがって、基本的にq.join()を使用すると、スレッド内の例外を処理するのが難しくなりますか? –
"シグナル(SIGINT、stop)"を読み込まないといけませんか? – Ber
これは事態をより複雑にしていますが、私はシグナルを使用してq.join()を使用する理由を示した例を追加しました。 –