python异步调用shell_异步 - 如何从Python异步运行外部命令?

本文讨论如何在Python中异步运行shell命令,以使脚本在命令执行期间能继续进行其他任务。重点介绍了subprocess.Popen方法,它允许在后台运行命令而不阻塞脚本。同时提到了其他解决方案,如使用Popen实例的poll()方法进行轮询检查,以及使用asyncproc和pexpect库进行更复杂的交互。
摘要由CSDN通过智能技术生成

异步 - 如何从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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值