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:
            ...

相关文章:

  • 2021-11-21
  • 2022-12-23
  • 2021-10-31
  • 2022-01-16
猜你喜欢
  • 2022-01-03
  • 2021-11-19
  • 2022-12-23
  • 2021-09-18
  • 2022-12-23
  • 2021-11-27
  • 2021-11-25
相关资源
相似解决方案