2012-02-28 9 views
1

G'afternoon。私は現在、無線カードを介して情報を継続的に検出するPython v2.xを使用してループしています。私が実装しようとしているのは、例えばループ内で既知のパケット(ループ内の比較式で識別されたもの)を検出した場合、既知のパケットの値が処理のために別の関数に渡されます電子メールが作成されている間は元のループが同時に実行されます。継続ループ中に別の関数に値を出力する

これはスレッディングが必要かどうか、私はループを使用していますか?これは自動的に続行しますか?私は、特定された値が別の関数に渡されると、ループは止まるだろうと確信していますが、わかりません。

答えて

0

(ご想像のとおり)を同時に意味するものに依存します。ループがある場合

他の関数を呼び出しただけでループは停止しません!もちろん、ループの一部であるemailが順番に実行されます。ある

、一連のイベントは次のようになります。センサー情報を検索

  • 次に
  • 情報が重要な場合は、メールしてください。 次に
  • センサ情報を再度取得します。 次に
  • 情報が重要な場合は、メールしてください。その後:これはあなたの目的のために問題ないはずのよう
  • ...

ですね。一方、電子メールにはしばらく時間がかかるかもしれませんが、作成中/送信中にセンサーからの読み取りを停止したくない場合があります。次に、実際の送信を行うには別のスレッド/プロセスを起動する必要があります。

1

もちろん、マルチスレッドまたはマルチ処理が必要です。

for pkt in pkts: 
    if pkt=="known packet": 
     spawnNewThreadOrProcess(pkt) 
     doOtherStuff() 

新しいスレッドまたはプロセスを起動しないと、ステートメントは順番に実行され、同時に実行されることはありません。

既知のパケットを、あとでスレッドの新しいプロセスを生成する関数に渡す場合は、それを心配する必要はありません。しかし、ポイントは、新しい実行スレッドやプロセスが生成されない限り、ループが順次ステートメントを実行することです。

関連する問題