Asyncio不会运行通过许多可能的方式安排的任务

问题描述 投票:0回答:1

这是我的基本代码的样子

def heavylifting(self):
  # Do the heavy lifting
  print('Done!')

async def async_heavylifting(self):
  await self.heavylifting()

以下是无法使用的各种方法:

示例1-什么都没发生。

def do_the_things(self):
  loop = asyncio.new_event_loop()
  asyncio.set_event_loop(loop)
  asyncio.run_coroutine_threadsafe(self.async_heavylifting(), loop)

Example2-这会引发无事件循环错误

def do_the_things(self):
  loop = asyncio.new_event_loop()
  asyncio.set_event_loop(loop)
  asyncio.create_task(self.async_heavylifting())

Example3-什么都没发生

def do_the_things(self):
  loop = asyncio.new_event_loop()
  asyncio.set_event_loop(loop)
  loop.create_task(self.async_heavylifting())

Example4-不能一劳永逸。举重电话中的障碍物

def do_the_things(self):
  loop = asyncio.new_event_loop()
  asyncio.set_event_loop(loop)
  loop.run_in_executor(None, self.heavylifting())

我做错了什么?如何使我的功能运行?

注意-当我调用举重函数时,我想实现即弃功能。我不想等待它完成]]

[这是我的基本代码看起来像是def heavylifting(self):#执行沉重的打印('Done!')异步def async_heavylifting(self):等待self.heavylifting()这是各种...

python python-asyncio python-3.7
1个回答
0
投票

您的示例失败,因为您没有启动事件循环。有几种方法可以做到这一点,最简单的方法是:

© www.soinside.com 2019 - 2024. All rights reserved.