1

これは私のコードで、さまざまな出力が得られます。

import threading
import time

def th_fun(limit,sleeptime):
    print '%s' % (limit)
    print '%s number of threads are active' % (threading.activeCount())
    time.sleep(sleeptime)



if __name__ == '__main__':
    for i in range(5):
        t = threading.Thread(target = th_fun , args = (i,1))
        t.start()

スレッドがいつ非アクティブになるかを誰かが知ることができますか? 私の理解では、5 つの異なるスレッド オブジェクトが作成されて実行され、 time.sleeptime() が実行されるとすぐに非アクティブになります。

4

1 に答える 1

1

複数のスレッドが実行される順序とそれぞれの速度は非決定論的であるため、出力はさまざまです。

発生するとすぐにt.start()、指定した引数で関数が呼び出されます。ただし、これは次のスレッドがセットアップされて開始されている間、バックグラウンドで実行されています。実行にかかる時間によっては、次のスレッドが開始される前に実行が終了するか、他のすべてのスレッドが開始された後に終了する可能性があります。

次の行を追加すると、理解に役立つ場合があります。

    print "Finished thread %s" % limit

あなたの機能の最後に。

于 2012-08-10T09:57:59.873 に答える