ホームページ >バックエンド開発 >Python チュートリアル >スレッドが print ステートメントの前に実行されるのはなぜですか?
スレッドの実行が途中で開始されました
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 サイトの他の関連記事を参照してください。