在不使用输出时,将subprocess.Popen的stdout / stderr设置为PIPE?

时间:2016-10-23 12:17:47

标签: python process subprocess pipe

使用subprocess.Popen(或内部使用Popen并转发所有参数(例如check_output)的内容以启动输出的过程时,我会让stdout }和stderr指向/dev/null(或等效的Windows),如How to hide output of subprocess in Python 2.7中所述。

现在我遇到了一个大型Python项目,其中这两个参数都设置为PIPE。这似乎没有问题,因为需要等待进程的结束,实际上进程一直在运行,直到它被Python程序杀死(即没有.wait()/.poll()/.communicate()调用)。

现在我想知道这是不是一个好主意以及幕后发生的事情。管道被打开但没有人从中读取,因此没有任何东西写在那里(虽然我认为没有阻塞)?或者打开一个管道并且进程正在那里写入并填满一些内存位置?

最重要的是:这是个好主意吗?

0 个答案:

没有答案