何かを行うワーカーで単純なキューを実装しようとしています。
プログラムは、ワーカーがキューを空にするのを完了するまで待機し、実行を継続する必要があります。ドキュメント
の例
を取り上げて、クラスに実装しようとしました。これが私のプロジェクトで実装される方法だからです。
このような:
class Test:
def __init__(self, n, q):
self.q = Queue()
print "Starting workers..."
for i in range(n):
t = threading.Thread(target=self.worker)
t.daemon = True
t.start()
print "Workers started"
for i in range(q):
self.q.put(i)
self.q.join()
print "Exiting"
def worker(self):
name = threading.currentThread().getName()
print "Thread %s started" % name
while True:
item = self.q.get()
print "Processing item %d" % item
sleep(1)
self.q.task_done()
クラスをインスタンス化するときt = Test(2, 100)
、私が見ることができるのは"Thread... started"
メッセージだけで、プログラムはハングします。
コードの何が問題になっていますか?
編集:このコードがハングアップしている間(テストした場所)、コマンドラインで問題なく実行されることに
気付きました。
環境問題のようです。IDLE