スレッドを閉じません。target= メソッドが終了するまで実行されます。スレッドを開始するために別の方法を導入しようとしている理由は明らかではありませんThread(target=...).start()
。単純に見えます。
スレッドを操作する場合、次の 3 つの基本的なオプションがあります。 - 子スレッドが関数の
使用を終了するまでメイン スレッドで待機する
- 何もせずに子スレッドを実行させる -メイン スレッドが終了し
たら、setDeamon(True) を使用して子スレッドを終了するスレッド オブジェクト。join()
また、cPython の GIL (Global Interpreter Lock) に注意する必要があります。
スレッドの基本的なテスト コードを次に示します。
import threading
import time
import sys
def f():
sys.stderr.write("Enter\n")
time.sleep(2)
sys.stderr.write("Leave\n")
if __name__ == '__main__':
t0 = threading.Thread(target=f)
t1 = threading.Thread(target=f)
t0.start()
time.sleep(1)
t1.setDaemon(True)
t1.start()
#t1.join()