subprocess.call 'occasionally' 在 Powershell 中挂起

subprocess.call 'occasionally' hangs in Powershell

我正在尝试使用子进程启动 mayapy 并将所有输出路由到一个文本文件。这行得通,但是我注意到大约 30% 的时间启动子进程的初始脚本将挂在 window I 运行 中。启动的 mayapy 完成正常,所有输出都转到指示 stdout_file,但调用它的主进程已挂起。马车 return 通常会导致它的其余部分完成,我不确定为什么。我什至在 运行 的子进程中添加了一个 sys.exit() 调用,但它仍然挂起。

maya = subprocess.call(command, stdout=stdout_file, stderr=stdout_file, shell=True)

logger.info("Exitcode {}".format(maya))
if str(maya) != '0':
    logger.error("Something went wrong...")

更新:python 主脚本是从 Windows 的 Powershell window 中启动的。关于为什么会发生这种情况的答案完全与此有关。

我觉得这就是进程挂起的全部原因,这有点愚蠢。

https://serverfault.com/questions/204150/sometimes-powershell-stops-sending-output-until-i-press-enter-why

"如果在 console\window 属性中选中了快速编辑模式 and\or 插入选项,并且您在控制台中单击,它将暂停输出。如果未选中这些选项,则输出无法通过在控制台内单击来暂停。"

由于我在 Powershell window 中关闭了这些选项,因此该进程尚未挂起。还解释了为什么它如此零星,只有在我不小心点击 window.

时才会偶尔发生