У меня есть простой 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 прекращается. Я хочу общаться с этим подпроцессом несколько раз, не перезагружая его снова. Возможно ли такое межпроцессное взаимодействие с модулем подпроцесса Python в Windows?
Только что добавили примечание относительно буферизации вывода к моему ответу. Не уверен в Windows, но в Linux нужен тот, который находится в 'echoprocess.py', хотя тот, что находится в' parentprocess.py', не является. Обычно безопаснее всегда включать их для максимальной переносимости. – Aya
Возможно, стоит обратить внимание на модуль ['multiprocessing'] (http://docs.python.org/2/library/multiprocessing.html), который обеспечивает уровень абстракции для такого рода межпроцессорной коммуникации. – Aya
Это то, что я сделал изначально, но у меня были некоторые начальные проблемы с ним в Windows. Требование Windows поместить весь весь код в блок 'if __name__ ==" __main __ ":' казалось, требует слишком много работы вокруг того, что у меня уже есть. –