要从Python异步运行外部命令,可以使用asyncio
库。asyncio
库是Python的异步I/O框架,它允许您编写并发代码,使用async
和await
关键字处理异步任务。以下是一个简单的示例,演示如何使用asyncio
异步运行外部命令:
import asyncio
import subprocess
async def run_command(command):
process = await asyncio.create_subprocess_shell(
command,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE
)
stdout, stderr = await process.communicate()
if process.returncode != 0:
raise Exception(f"Command '{command}' failed with error: {stderr.decode('utf-8')}")
return stdout.decode('utf-8')
async def main():
command1 = "echo 'Hello, World!'"
command2 = "echo 'Goodbye, World!'"
task1 = asyncio.create_task(run_command(command1))
task2 = asyncio.create_task(run_command(command2))
output1 = await task1
output2 = await task2
print(f"Output from command 1: {output1}")
print(f"Output from command 2: {output2}")
if __name__ == "__main__":
asyncio.run(main())
在这个示例中,我们定义了一个名为run_command
的异步函数,它使用asyncio.create_subprocess_shell
创建一个子进程,并使用await process.communicate()
等待子进程完成。然后,我们在main
函数中创建两个任务,分别运行两个外部命令,并使用await
等待它们完成。最后,我们打印命令的输出。
这个示例可以帮助您从Python异步运行外部命令。请注意,这个示例仅适用于Python 3.7及更高版本。如果您使用的是较旧的Python版本,可能需要使用其他方法来实现异步。
高校公开课
云+社区技术沙龙[第14期]
云+社区沙龙online[数据工匠]
DBTalk
腾讯云GAME-TECH沙龙
云+社区沙龙online [技术应变力]
云+社区技术沙龙[第11期]
云+社区沙龙online第5期[架构演进]
云+社区开发者大会 长沙站
领取专属 10元无门槛券
手把手带您无忧上云