0

バックグラウンドでスレッドを起動する必要がありますが、出力はメイン内に固執するのではなく、スレッドに従っているようです。私はこのようなものを持っています:

import threading

def work()
  while True:
  do stuff

def recieve()
  while True:
  await instruction

#main

recieve()
if instruction == "do work"
  threading.Thread(target=work()).start()

他にも多くの命令が受信され、順次処理されますが、work() が完了するまでに長い時間がかかるため、スレッドが必要です。命令を待機している間、バックグラウンドで動作するスレッドが起動されることを期待します。これが起こらないことを除いて。新しく作成されたスレッドにフォーカスが置かれるため、それ以上の指示を受け取ることはできません。

どうしてこれなの?なにが問題ですか?

どうもありがとう

4

1 に答える 1

1

receive() は無限ループのために終了しません。スレッドが開始されません。

最初にスレッドを開始します。

if instruction == "do work":
    threading.Thread(target=work).start()
recieve()

からドロップ()threading.Thread(target=work()).start()ます。関数呼び出しをメイン スレッドで実行しますwork()work

于 2013-07-27T16:08:04.687 に答える