0

プログラム X からプログラム Y を開き、プログラム X で作業を続けようとしていますが、Y がコマンド ラインを使用して呼び出されると、キーストロークに応答しながら、コード内の次のものをスキップし始めるようです。 .

問題は、どうすれば X にコードを完成させることができるかということです。

私が使う:

 proc=subprocess.Popen([cmd], shell=True)
 proc.communicate()

としても:

 os.system([cmd])

ここで、cmd は引数付きの端末のコマンドです。

ところで、私は Linux を実行しています。

4

1 に答える 1

0

両方の方法 ( Popen+communicate()os.system) は同期的であるため、親プロセスの実行は子プロセスが終了するまでブロックされます。

両方のプロセスを同時に実行したい場合は、子から出力を収集する別の方法を考え出す必要があります。

いくつかのアイデア:

  1. 親プロセスのスレッド内のコードを移動します ( threadingを参照) 。

  2. stdout パイプproc.communicate()とは異なる方法で、子出力を取り除いて収集します。その他のアイデアについては、マルチプロセッシングモジュールを参照してください。または、勇気がある場合は、ZeroMQを調べてみてください(やり過ぎかもしれませんが、素晴らしいコミュニケーション ライブラリだと思います)。

于 2012-08-22T06:13:18.413 に答える