跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Python 异步队列问题
未分類
14 5 月 2020

Python 异步队列问题

Python 异步队列问题

資深大佬 : fangwenxue 3

    async def run_task(self, tasks, task_handler):         consumer = asyncio.ensure_future(self.consume(self.task_queue))          await self.produce(tasks, task_handler, self.task_queue)         await self.task_queue.join()          consumer.cancel()      async def produce(self, tasks, task_handler, queue):         n = len(tasks)         for i, task in enumerate(tasks):             item = (i + 1, n, task, task_handler)             await queue.put(item)      async def consume(self, queue):         async with ClientSession() as session:             while 1:                 item = await queue.get()                 index = item[0]                 count = item[1]                 handler = item[3]                 rs = await handler(item[2], i=index, n=count, session=session)                 print('consuming {}/{} {}...'.format(index, count, rs))                 queue.task_done()                 # 只要加了这句程序就挂起了                 await self.produce(rs, self.detail_handler, self.result_queue)                  loop = asyncio.get_event_loop() loop.run_until_complete(self.run_task(url_list, self.page_handler)) loop.close() 

打印

consuming 1/5 ... consuming 2/5 ... 
  • 如果不加这句是正常的
  • 加了这句为什么会挂起
await self.produce(rs, self.detail_handler, self.result_queue) 

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具