我有一个简单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要求似乎需要我已经有的太多工作。 –