1

何かを行うワーカーで単純なキューを実装しようとしています。
プログラムは、ワーカーがキューを空にするのを完了するまで待機し、実行を継続する必要があります。ドキュメント
の例 を取り上げて、クラスに実装しようとしました。これが私のプロジェクトで実装される方法だからです。 このような:

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

4

1 に答える 1