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

スレッドが print ステートメントの前に実行されるのはなぜですか?

Barbara Streisand
リリース: 2024-11-12 17:58:02
オリジナル
964 人が閲覧しました

Why Does My Thread Execute Before the Print Statement?

スレッドの実行が途中で開始されました

t1.start() を呼び出していないにもかかわらず、後続の出力の前に t1 が実行を開始するのはなぜですかstate?

分析

t1 のターゲット定義の self.read() の後に括弧が存在すると、Python のデフォルトのパラメーター渡しセマンティクスにより、途中で実行がトリガーされます。括弧を省略すると、self.read は実行結果ではなく関数参照として渡されます。

解決策

確実に正しく実行するには、末尾の括弧を削除してください。 from self.read():

# Remove parentheses to pass a function reference
t1 = threading.Thread(target=self.read)
t1.start()
print("something")
ログイン後にコピー

引数を必要とするターゲットの場合は、args と kwargs またはラムダ関数:

# Using args and kwargs (preferred)
t1 = threading.Thread(target=f, args=(a, b), kwargs={'x': c})

# Using a lambda function (watch for variable reassignment issues)
t1 = threading.Thread(target=lambda: f(a, b, x=c))
ログイン後にコピー

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

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