使用多处理时如何与Popen通信

时间:2017-04-18 08:50:54

标签: python subprocess multiprocessing python-multiprocessing

最初,我的代码就像:

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

我只是想知道为什么会这样,是因为我使用多处理?如果是这样,为什么我不能这样写,以及如何解决这个问题?

0 个答案:

没有答案