最初,我的代码就像:
if __name__ == '__main__':
subproc = subprocess.Popen("fem.exe", stdin=subprocess.PIPE, stdout=subprocess.PIPE)
subproc.stdin.write("1\n")
subproc.stdin.write("1\n1\n1\n1\n1\n1\n")
subproc.stdin.flush()
while True:
line = subproc.stdout.readline()
print line
它将“fem.exe”称为subproc
,将输入发送到subproc
并通过管道获取输出。这段代码效果很好。
但是,现在我需要从另一个线程发送一些输入
subproc = subprocess.Popen("fem.exe", stdin=subprocess.PIPE, stdout=subprocess.PIPE)
def run():
subproc.stdin.write(get_rest_input())
subproc.stdin.flush()
if __name__ == '__main__':
subproc.stdin.write("1\n")
process = multiprocessing.Process(target=run)
process.start()
while True:
line = subproc.stdout.readline()
print line
在此版本中,我创建了一个新的Process
,其中get_rest_input()
被调用以计算其他输入subproc
的需要。但是我从“fem.exe”收到错误,它告诉我遇到了EOF错误
run-time error F6501: READ(CON)
- end of file encountered
我只是想知道为什么会这样,是因为我使用多处理?如果是这样,为什么我不能这样写,以及如何解决这个问题?