21

ループ内に新しいスレッドを作成し、それらが終了するのを待たないプログラムを作成しようとしています。スレッドで .start() を使用すると理解できるように、メインループは続行する必要があり、他のスレッドはオフになり、同時に作業を行います

ただし、新しいスレッドが開始されると、スレッドが完了するまでループがブロックされます。Pythonでスレッドがどのように機能するかを誤解したことがありますか、それとも何か愚かなことをしているのでしょうか。

ここに新しいスレッドを作成するための私のコードがあります。

def MainLoop():
    print 'started'
    while 1:
        if not workQ.empty():
            newThread = threading.Thread(target=DoWorkItem(), args=())
            newThread.daemon = True
            newThread.start()
        else:
            print 'queue empty'

皆さんありがとう

4

1 に答える 1

44

これは関数を呼び出し、その結果target次のように渡します。

threading.Thread(target=DoWorkItem(), args=())

関数オブジェクト自体を渡すために括弧を失います。

threading.Thread(target=DoWorkItem, args=())
于 2013-04-11T10:12:52.843 に答える