ホームページ > バックエンド開発 > Python チュートリアル > Python スレッドを明示的に開始する前に実行されるのはなぜですか?

Python スレッドを明示的に開始する前に実行されるのはなぜですか?

Susan Sarandon
リリース: 2024-11-10 08:03:02
オリジナル
667 人が閲覧しました

Why does my Python thread execute before I explicitly start it?

明示的な呼び出し前のスレッド実行

Python のマルチスレッド モジュールでは、Thread オブジェクトを使用してコードを並列実行できます。ただし、スレッドの作成および構成時に異常な動作が発生する可能性があります。

次に示すように、末尾括弧を使用してスレッドのターゲット引数に関数を渡すときに問題が発生します。

t1 = threading.Thread(target=self.read())
ログイン後にコピー

この動作これは、target=self.read() を呼び出すとスレッドに self.read() の実行が割り当てられるという誤解から生じています。残念ながら、これは間違いです。括弧を追加すると、関数がすぐに呼び出され、代わりにその戻り値がターゲットとして割り当てられます。 Thread オブジェクトの場合、ターゲットとして関数を受け取ることが期待されます。

この問題を解決するには、ターゲット引数からかっこを削除し、スレッドの start() メソッドを明示的に呼び出します。

t1 = threading.Thread(target=self.read)
t1.start()
ログイン後にコピー

これで、self.read() は新しく作成されたスレッドで無期限に実行され、プログラムが続行して「何か」を出力できるようになります。この変更により、関数がターゲットとして正しく割り当てられ、途中で実行されないようになります。

以上がPython スレッドを明示的に開始する前に実行されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート