pythonマルチスレッドstart_new_thread()


一、簡単に述べる
CPython実装の詳細:GIL(Global Interpreter Lock)のため、CPythonではpythonコードを実行するスレッドは一度に1つしかありませんが、実行向けのライブラリではこの制限を克服することができます.アプリケーションをコンピュータリソースをよりよく利用するにはmultiprocessingを使用したほうがいいです.しかし,複数のI/Oタスクを同時に実行すると,スレッドは依然として良好な選択である.pythonスレッドの役割は主にI/Oタスク,例えばネットワークデータの読み書きなどに対応する.
二、例
  1. 関数の説明.  start_new_thread(function,args[,kwargs])は、新しいスレッドを作成し、スレッド識別子を返します.functionはスレッド関数,argsはスレッド関数のパラメータ,listである.kwargsはオプションのパラメータで、記入しないことができます.
#!/usr/bin/env python

# _*_ coding = utf-8 _*_

import thread
import time

def work_thread(id):

    cnt = 1

    print "Thread %d is runing..." % id

    while True:
        print "Thread with ID %d has counter value %d" % (id, cnt)
        time.sleep(2) 
        cnt += 1


for i in range(1,5):
    thread.start_new_thread(work_thread,(i,))

print "Main thread doing an infinite wait loop..."

while True:
    pass

コードを実行し、次のように出力します.
$ ./thread_demo.py Main thread doing an infinite wait loop… Thread 3 is runing… Thread 1 is runing… Thread 2 is runing… Thread 4 is runing… Thread with ID 1 has counter value 1 Thread with ID 4 has counter value 1 Thread with ID 2 has counter value 1 Thread with ID 3 has counter value 1 Thread with ID 2 has counter value 2 Thread with ID 3 has counter value 2 Thread with ID 4 has counter value 2 Thread with ID 1 has counter value 2 Thread with ID 3 has counter value 3 Thread with ID 4 has counter value 3 Thread with ID 1 has counter value 3 Thread with ID 2 has counter value 3 Thread with ID 1 has counter value 4 Thread with ID 4 has counter value 4 Thread with ID 2 has counter value 4 Thread with ID 3 has counter value 4
スレッド終了関数:thread.exit ().現在のスレッドを終了します.この関数を呼び出すとSystemExit例外がトリガーされ、処理されていない場合はスレッドが終了します.