异步 - 如何从Python异步运行外部命令?
我需要从Python脚本异步运行shell命令。 通过这个我的意思是我希望我的Python脚本在外部命令关闭时继续运行并执行它需要做的任何事情。
我看过这篇文章:
在Python中调用外部命令
然后我去做了一些测试,如果我在命令结束时使用&,它看起来像os.system()将完成这项工作,这样我就不必等待它返回。 我想知道的是,这是否是实现这一目标的正确方法? 我试过commands.call(),但它对我不起作用,因为它阻止了外部命令。
如果建议使用os.system()或者我应该尝试其他路线,请告知我们。
7个解决方案
110 votes
subprocess.Popen正是你想做的。
from subprocess import Popen
p = Popen(['watch', 'ls']) # something long running
# ... do other stuff while subprocess is running
p.terminate()
(编辑以完成评论的答案)
Popen实例可以执行各种其他操作,比如communicate()它可以查看它是否仍在运行,并且您可以communicate()用它在stdin上发送数据,并等待它终止。
Ali Afshar answered 2019-08-14T15:15:58Z
39 votes
如果要并行运行多个进程,然后在产生结果时处理它们,可以使用如下所示的轮询:
from subproce