Python 启动进程并阻止它直到完成的最佳方法
我被告知subprocess.Popen不会阻塞,因此进程在后台运行,python程序不会等到它完成。然而,这不是我想要的Python 启动进程并阻止它直到完成的最佳方法,python,Python,我被告知subprocess.Popen不会阻塞,因此进程在后台运行,python程序不会等到它完成。然而,这不是我想要的 我将我的程序调用到一个外部python程序中,我无法控制它。它不返回任何返回代码,只运行、操作文件并完成。我想调用它,并且只在调用完成后继续我的python程序。如何执行此操作?调用或对子流程执行操作。最好的方法是使用通信方法: 另外,请看一下wait方法,它说明了为什么在大多数情况下应该使用communicate: 使用子流程中的调用方法 子流程调用(*popenarg
我将我的程序调用到一个外部python程序中,我无法控制它。它不返回任何返回代码,只运行、操作文件并完成。我想调用它,并且只在调用完成后继续我的python程序。如何执行此操作?调用或对子流程执行操作。最好的方法是使用
通信方法:
另外,请看一下wait
方法,它说明了为什么在大多数情况下应该使用communicate:
使用子流程中的调用
方法
子流程调用(*popenargs,**kwargs)
使用参数运行命令。等待命令完成,然后重试
返回returncode属性
看→ 大多数时候?除非我用管道工作。如果我只是运行一个命令并想等待它,我不需要它。大多数情况下,因为人们不应该忽略进程的输出,而管道(在我看来)是处理它的最方便的方式。这导致使用通信。是和否。通常是,但如果进程输出(或期望)兆字节的数据,大多数情况下最好是逐段获取数据,而不是一次将其全部放入,就像communicate()
所做的那样……大多数情况下”链接到“不忽略输出”。是否使用communicate()
或自己处理,取决于预期的数据量。