2012-05-08 7 views
0

私は使用しているサブプロセスを持っています。私は非同期的にこのプロセスとの間で読み書きを行うことができなければなりません。それはそれぞれのstdoutとstdinです。サブプロセスを開いて通信する

どうすればいいですか?私はsubprocessを見てきましたが、communicateメソッドはプロセスの終了を待っています(これは私が望むものではありません)。subprocess.stdout.readメソッドはブロックできます。

サブプロセスはではない Pythonスクリプトですが、絶対に必要な場合は編集できます。合計で私はこれらのサブプロセスの約15を持っています。

+1

あなたは 'pexpect'を試しましたか? – wim

答えて

0

communicateがどのように実装されているかご覧ください。

それを行うには、2つの方法、基本的にあります。

  1. いずれかselect()を使用して、読み出し/書き込みができるかどうかを通知することは、
  2. または読み取りを委任し、両方のスレッドに、ブロックすることができ、書き込みそれぞれ、
0

プロセス間通信にキューまたはNOSQL DBを使用することを検討しましたか?私はRedisを使用して、あなたのプロセスと異なるキーを読み書きすることをお勧めします。

0

は、sargeのを見てください:sargeのドキュメントからhttp://sarge.readthedocs.org/en/latest/index.html

あなたはPythonのアプリケーションから外部プログラムと対話したい場合は、Sargeのがよりあなたの人生を容易にすることを意図しているライブラリでありますPythonの標準ライブラリでサブプロセスモジュールを使用しています。

関連する問題