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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-12 17:58:02943ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。