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 创建的事件循环挂起的主要内容,如果未能解决你的问题,请参考以下文章