- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,基本上我需要澄清 RE:如何使用 asyncio.run_until_complete(Future)
函数。
在我的循环中添加 3 个任务后,我尝试使用 asyncio.wait()
函数创建一个 Future
“完成回调”。
event_loop.close()
永远不会运行:import asyncio
async def repeat_message(message, interval_seconds, max_iters=10):
iters = 0
while True:
print(message)
if iters >= max_iters:
return 'Complete.'
iters += 1
await asyncio.sleep(interval_seconds)
if __name__ == "__main__":
message_A = "xXxXxXxXxXxXxXxXxXxXx"
interval_A = 0.5
message_B = "I LOVE"
interval_B = 1
message_C = "EXPLOSIONS!"
interval_C = 1.5
event_loop = asyncio.get_event_loop()
task_A = event_loop.create_task(repeat_message(message_A, interval_A))
task_B = event_loop.create_task(repeat_message(message_B, interval_B))
task_C = event_loop.create_task(repeat_message(message_C, interval_C))
completed = event_loop.create_future()
completed.add_done_callback(asyncio.wait([task_A, task_B, task_C], loop=event_loop))
try:
event_loop.run_until_complete(completed)
finally:
event_loop.close()
# Never prints.
print('DONE')
最佳答案
这就是 gather
的用途。摆脱你的 completed
future ,并以这种方式使用 gather
:
event_loop.run_until_complete(asyncio.gather(task_A, task_B, task_C))
您在此处编写的内容创建了一个 Future
并对其进行了配置,以便当 Future 完成时,然后它将等待任务。但是你永远不会完成 future (例如使用 set_result()
)。 Future
并不是真正关于异步运行的东西。它只是一个数据结构,表示“某些人最终调用 set_result()
或使用 set_exception()
引发异常时将提供的某些 future 值。”事实证明,这通常对异步工作很有用,但它本身并不是协程。
关于python - 所有任务完成后如何终止python asyncio event_loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45448224/
好的,基本上我需要澄清 RE:如何使用 asyncio.run_until_complete(Future) 函数。 在我的循环中添加 3 个任务后,我尝试使用 asyncio.wait() 函数创建
在 Flask 应用程序中运行异步事件循环的最佳方法是什么? 我的 main.py 看起来像这样: if __name__ == '__main__': try: app.ru
探索 Python 3.4.0 的 asyncio 模块,我试图创建一个类,其中包含从类外部的 event_loop 调用的 asyncio.coroutine 方法。 我的工作代码如下。 impor
我是一名优秀的程序员,十分优秀!