Python でマルチスレッドを実装するには 2 つの方法があります:
関数、スレッドクラス
1. 機能
スレッド モジュールで start_new_thread() 関数を呼び出してスレッドを作成し、スレッド関数の形式でスレッドに何を行うかを指示します
しかし、このメソッドをサポートする他のメソッドは今のところ見つかりません。メインスレッドの待機も while 1 メソッドで解決する必要があります。
2. スレッドクラス
threading モジュールを呼び出し、threading.Thread のサブクラスを作成してカスタム スレッド クラスを取得します。
threading.Thread クラスの継承可能な関数:
getName() はスレッドオブジェクト名を取得します
setName() はスレッド オブジェクト名を設定します
join() は、後続のコマンド
を実行する前に、呼び出し元のスレッドが終了するのを待ちます。
setDaemon(bool) ブロック モード、True: 親スレッドは子スレッドの終了を待機しません。False は待機します。デフォルトは False
isDaemon() は、子スレッドが親スレッドとともに終了するかどうか、つまり setDaemon() によって設定された値を決定します
isAlive() はスレッドが実行されているかどうかを判断します
例
join() ブロック待機
thread1.join() を使用しない場合、次の結果が得られます:
メインスレッド待機中
エラー: スレッド T1 での例外 (インタープリターのシャットダウン中に発生する可能性が高い):
つまり、メインスレッドは子スレッドを待たずに終了します。
複数のサブスレッド
ここでの t は複数のスレッドを同時に処理できます。つまり、 t はスレッド ハンドルであり、再割り当てはスレッドに影響しません。
ここで奇妙なのは、t.run() の実行時に他のスレッドが実行されないことです。分かりにくいですが、start()を使ってみましょう。当面は、start() はノンブロッキング並列処理であるのに対し、run はブロッキングであることが理解されています。
スレッドロック
スレッド化は、スレッドの同期を実現するためにスレッド ロックを提供します。
結果を取得します: