async semphore

1、Semaphore 是协程中用于控制某资源同时被访问的个数

2、Semaphore 维护了当前访问的个数,提供同步机制,控制同时访问的个数

async def main(self):
        tasks = []
        # 在调用协程之前实例化一个信号量
        local_data, details_data = await self.get_local_data()
        semaphore = asyncio.BoundedSemaphore(10)
        for kol in local_data:
            # 将信号量传递给将进行限制的协程
            task = asyncio.create_task(self.pc_crawl(kol, details_data, semaphore))
            tasks.append(task)

        for task in tasks:
            await task
async def pc_crawl(self, kol, details_data, semaphore):
    # 只有在信号量可以被获取的情况下才能进入
    async with semaphore:
        async with httpx.AsyncClient() as client:
            ...

 posted on 2020-12-18 10:33  Rannie`  阅读(152)  评论(0编辑  收藏  举报
去除动画
找回动画