asyncio.new_event_loop 创建的事件循环挂起

Posted

技术标签:

【中文标题】asyncio.new_event_loop 创建的事件循环挂起【英文标题】:Event loop created by asyncio.new_event_loop hangs 【发布时间】:2016-03-31 23:09:33 【问题描述】:

以下代码只是挂起,没有打印任何内容:

import asyncio

async def foo(loop):
    print('foo')
    loop.stop()

loop = asyncio.new_event_loop()
asyncio.ensure_future(foo(loop))
loop.run_forever()

如果我使用 get_event_loop 一切正常。是我做错了什么还是我偶然发现了一个错误?

我正在使用 Python 3.5.1。

【问题讨论】:

ensure_future() 接受可选的loop 参数,您应该传递它以不与默认值冲突。实际上,我强烈建议仅在 asyncio 应用程序中使用显式循环。 哦,天哪...我刚刚开始对错误的问题而不是我的问题进行赏金:-/,如果您可以在这里帮助我:***.com/questions/35861175/... 我很乐意奖励您赏金。 【参考方案1】:

asyncio.AbstractEventLoopPolicy.new_event_loop documentation 说:

如果需要将此循环设置为当前的事件循环 在上下文中,set_event_loop() 必须显式调用。


import asyncio

async def foo(loop):
    print('foo')
    loop.stop()

loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop) # <----
asyncio.ensure_future(foo(loop))
loop.run_forever()

【讨论】:

啊,我确实在某个时候看到过,但我忘记尝试了。可能我认为我不需要它,因为我不太确定它是什么意思!谢谢。 哦,天哪...我刚刚开始悬赏错误的问题而不是我的问题:-/,如果你能在这里帮助我:***.com/questions/35861175/… 我很乐意奖励你。

以上是关于asyncio.new_event_loop 创建的事件循环挂起的主要内容,如果未能解决你的问题,请参考以下文章

Spark SQL怎么创建编程创建DataFrame

要用MFC创建一个窗口,如何创建?

oracle 安装完了,怎么创建用户和数据库???

oracle 安装完了,怎么创建用户和数据库???

mysql在创建表的时候可以创建字段那么创建新数据库的时候可以顺便创建表吗

Pod 的创建