Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 启动进程并阻止它直到完成的最佳方法_Python - Fatal编程技术网

Python 启动进程并阻止它直到完成的最佳方法

Python 启动进程并阻止它直到完成的最佳方法,python,Python,我被告知subprocess.Popen不会阻塞,因此进程在后台运行,python程序不会等到它完成。然而,这不是我想要的 我将我的程序调用到一个外部python程序中,我无法控制它。它不返回任何返回代码,只运行、操作文件并完成。我想调用它,并且只在调用完成后继续我的python程序。如何执行此操作?调用或对子流程执行操作。最好的方法是使用通信方法: 另外,请看一下wait方法,它说明了为什么在大多数情况下应该使用communicate: 使用子流程中的调用方法 子流程调用(*popenarg

我被告知subprocess.Popen不会阻塞,因此进程在后台运行,python程序不会等到它完成。然而,这不是我想要的


我将我的程序调用到一个外部python程序中,我无法控制它。它不返回任何返回代码,只运行、操作文件并完成。我想调用它,并且只在调用完成后继续我的python程序。如何执行此操作?

调用或对子流程执行操作。

最好的方法是使用
通信方法:

另外,请看一下
wait
方法,它说明了为什么在大多数情况下应该使用communicate:

使用子流程中的
调用
方法

子流程调用(*popenargs,**kwargs) 使用参数运行命令。等待命令完成,然后重试 返回returncode属性


看→

大多数时候?除非我用管道工作。如果我只是运行一个命令并想等待它,我不需要它。大多数情况下,因为人们不应该忽略进程的输出,而管道(在我看来)是处理它的最方便的方式。这导致使用
通信
。是和否。通常是,但如果进程输出(或期望)兆字节的数据,大多数情况下最好是逐段获取数据,而不是一次将其全部放入,就像
communicate()
所做的那样……大多数情况下”链接到“不忽略输出”。是否使用
communicate()
或自己处理,取决于预期的数据量。