我有一個簡單echoprocess.py:與子溝通,而無需等待子進程終止窗口
import sys
while True:
data = sys.stdin.read()
sys.stdout.write("Here is the data: " + str(data))
而一個parentprocess.py
from subprocess import Popen, PIPE
proc = Popen(["C:/python27/python.exe", "echoprocess.py"],
stdin = PIPE,
sdtout = PIPE)
proc.stdin.write("hello")
print proc.stdout.read()
這只是掛起,直到echoprocess.py是終止。我想多次與這個子進程通信,而不必重新啓動它。這種進程間通信是否可以與Windows上的Python子進程模塊進行通信?
剛剛添加了關於輸出緩衝的註釋到我的答案。不確定Windows,但在Linux上'echoprocess.py'中的一個是必要的,儘管'parentprocess.py'中的那個不是。通常最安全的是將其包含在內以實現最大的便攜性。 – Aya
也許值得看看['multiprocessing'](http://docs.python.org/2/library/multiprocessing.html)模塊,它爲這種進程間通信提供了一個抽象層。 – Aya
這就是我最初做的,但是我在Windows上遇到了一些初始問題。將所有代碼放在'if __name__ =='__main __「:'塊中的Windows要求似乎需要我已經有的太多工作。 –