我需要使用 subprocess.Popen
启动一些长时间运行的进程,并且希望将每个自动管道的 stdout
和 stderr
分离为单独的日志文件 . 每个进程将同时运行几分钟,我希望在进程运行时写入两个日志文件( stdout
和 stderr
) per process .
我是否需要在循环中的每个进程上不断调用 p.communicate()
以更新每个日志文件,或者是否有某种方法可以调用原始 Popen
命令以便 stdout
和 stderr
自动流式传输以打开文件句柄?
3 回答
我同时运行两个子进程,并将两者的输出保存到单个日志文件中 . 我还 Build 了一个超时来处理挂起的子进程 . 当输出太大时,超时总是触发,并且任何一个子进程的stdout都不会保存到日志文件中 . 亚历克斯上面提出的答案并没有解决它 .
您可以将
stdout
和stderr
作为参数传递给Popen()
例如
按the docs,
所以只需将open-for-writing文件对象作为命名参数
stdout=
和stderr=
传递,你应该没问题!