Python THREADINGモジュールにおけるJOIN()の理解方法

973 ワード

Joinメソッド:1つのスレッドが実行中に別のスレッドを呼び出し、それが完了してから実行される場合、
では、このスレッドを呼び出すときに呼び出されるスレッドのjoinメソッドを使用することができます.
 
コードは次のとおりです.
import threading
import time
from time import sleep


#   ,        Thread   
def now():
    return str(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))

def test(nloop, nsec):
    print 'start loop', nloop, 'at:', now()
    sleep(nsec)
    print 'loop', nloop, 'done at:', now()

def main():
    print 'starting at:',now()
    threadpool = []

    for i in xrange(10):
        th = threading.Thread(target=test, args=(i, 2))
        threadpool.append(th)

    for th in threadpool:
        th.start()

    for th in threadpool:
        threading.Thread.join(th)

    print 'all Done at:', now()

if __name__ == '__name__':
    main()

プログラムでは,最後のjoin()メソッドの呼び出しは,メインスレッドがサブスレッドを1つずつ呼び出すjoin()メソッドである.呼び出されたスレッドが実行されると、
次のコードは、プライマリ・スレッドが実行します.