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