如何从Python异步运行外部命令?

我需要从Python脚本异步运行shell命令。我的意思是,我希望我的Python脚本在外部命令关闭并执行任何需要执行的操作时继续运行

我读了这篇文章:

在Python中调用外部命令

然后我去做了一些测试,如果我使用&的话,os.system()将完成这项工作在命令末尾,这样我就不必等待它返回。我想知道的是,这是否是实现这一目标的正确途径?我尝试了commands.call(),但它对我无效,因为它阻塞了外部命令

请告诉我是否建议使用os.system(),或者我是否应该尝试其他方法

subprocess.Popen完全按照您的要求执行

子流程导入Popen的


p=Popen(['watch','ls'])#长时间运行的东西
# ... 在子流程运行时执行其他操作
p、 终止()

(编辑以完成评论中的答案)

Popen实例可以执行各种其他操作,比如您可以poll()查看它是否仍在运行,您可以与其通信()在stdin上发送数据,并等待它终止

发表评论