gpt4 book ai didi

python - 如何使用asyncio python中的子进程模块限制并发进程数

转载 作者:行者123 更新时间:2023-12-01 02:37:53 25 4
gpt4 key购买 nike

import asyncio
import asyncio.subprocess
args="blah blah argument "
create=asyncio.create_subprocess_shell(args,stdout=asyncio.subprocess.PIPE)
proc = await create
output= await proc.stdout.read( )

这是我的服务器代码的一部分,它从客户端获得数千个并行点击。现在我应该如何限制服务器创建的子进程的最大数量来运行参数等等。因为这段代码使用了我 100% 的 CPU。我需要在smae cpu上部署其他服务器

最佳答案

asyncio.Semaphore是限制同时作业的内部计数器的一种方法:

sem = asyncio.Semaphore(10)

async def do_job(args):
async with sem: # Don't run more than 10 simultaneous jobs below
proc = await asyncio.create_subprocess_shell(args, stdout=PIPE)
output = await proc.stdout.read()
return output

请注意,您应该确保作业数量的增加不会比您实际完成它们的速度快得多。否则,您将需要比这更复杂的东西。

关于python - 如何使用asyncio python中的子进程模块限制并发进程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46031558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com