从 Python 异步执行外部命令
在 Python 脚本编写中,通常需要调用可能需要大量时间的外部命令时间完成。为了确保 Python 脚本在这些命令运行时不会停止,需要异步执行。之前使用 os.system() 的尝试包括使用 & 将命令与脚本流程分离,但这种方法的适用性值得怀疑。
更有效的解决方案是 subprocess.Popen 函数。使用 Popen,您可以启动外部命令,而不会阻止 Python 脚本的执行。考虑以下示例:
from subprocess import Popen p = Popen(['watch', 'ls']) # something long running # ... do other stuff while subprocess is running p.terminate()
此代码片段利用 Popen 启动长时间运行的命令(例如“watch ls”)。然后,Python 脚本可以继续执行自己的任务,同时外部命令保持活动状态。在适当的情况下,可以使用 Terminate() 方法终止 Popen 实例。
此外,Popen 还提供其他功能,例如轮询状态、通过 stdin 发送输入以及等待终止。通过利用 subprocess.Popen,您可以将异步外部命令执行无缝集成到 Python 脚本中。
以上是如何从 Python 异步执行外部命令的详细内容。更多信息请关注PHP中文网其他相关文章!