创建异步子进程
1. 发起异步进程
import asyncio
async def run(cmd: str | bytes):
proc = await asyncio.create_subprocess_shell(
cmd,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
stdout, stderr = await proc.communicate()
print(f"{cmd!r} exited with {proc.returncode}")
if stdout:
print(f"[stdout]\n{stdout.decode()}")
if stderr:
print(f"[stderr]\n{stderr.decode()}")
asyncio.run(run("ls /"))
2. Windows 下的限制
TODO Windows 只有 ProactorEventLoop
支持异步子进程,但是许多库都不支持 ProactorEventLoop
,所以 Windows 下的异步子进程支持不好。