1

Pythonでスレッド化を学ぼうとしているときに、次のコードを書きました。

    import threading
    import time

    def printWorker(x,y):
        t = time.time()
        while time.time() - t < 10:
            print "Name:%s  Time:%s" %(y,str(time.time() - t))
            time.sleep(x)

    t1 = threading.Thread(target = printWorker(2,'Thread-1'))
    t2 = threading.Thread(target = printWorker(3,'Thread-2'))

    t1.start()
    t2.start()

Thread-1 と Thread-2 の両方が同時に開始する出力を取得しようとしています。IE プリント

Thread-1 スタッフ、Thread-2 スタッフ、Thread-1 スタッフ、Thread-2 スタッフ、代わりに

スレッド 1 のスタッフ、スレッド 1 のスタッフ、スレッド 1 のスタッフ、スレッド 1 のスタッフ、スレッド 2 のスタッフ、スレッド 2 のスタッフ、スレッド 2 のスタッフ、スレッド 2 のスタッフ

代わりに、Thread-2 は Thread-1 の後にのみ開始します。オンラインの例を確認しましたが、機械的に何が間違っているのかわかりません。

4

1 に答える 1

4

引数を渡すには、次のようにする必要があります。

t1 = threading.Thread(target=printWorker, args=(2, 'Thread-1'))
t2 = threading.Thread(target=printWorker, args=(3, 'Thread-2'))

コードはメイン スレッドで printWorker を呼び出し、target=None (printWorker の戻り値) で 2 つのスレッドを開始しています。

于 2011-11-27T18:03:14.170 に答える