我有一個我使用的子進程。我必須能夠異步地讀/寫這個進程到它的各自的stdout和stdin。打開並與子進程通信
我該怎麼做?我看過subprocess
,但communicate
方法等待進程終止(這不是我想要的),並且方法可以阻止。
子流程是不是 Python腳本,但可以在絕對必要時進行編輯。總的來說,我將有大約15個這樣的子流程。
我有一個我使用的子進程。我必須能夠異步地讀/寫這個進程到它的各自的stdout和stdin。打開並與子進程通信
我該怎麼做?我看過subprocess
,但communicate
方法等待進程終止(這不是我想要的),並且方法可以阻止。
子流程是不是 Python腳本,但可以在絕對必要時進行編輯。總的來說,我將有大約15個這樣的子流程。
看看如何實現communicate
。
基本上有2種方式來做到這一點:
select()
並通知您是否可以讀/寫,您是否考慮過使用一些隊列或NOSQL數據庫進行進程間通信? 我建議你使用Redis,並用你的進程讀寫不同的密鑰。
看一看sarge中:http://sarge.readthedocs.org/en/latest/index.html
從sarge的文檔:
如果你想從你的Python應用的外部程序進行交互,Sarge的是它的目的是讓你的生活不是更容易庫使用Python標準庫中的子進程模塊。
你有沒有試過'pexpect'? – wim