Inf*_*ner 15 python python-asyncio
我见过使用运行阻塞代码
loop = asyncio.get_running_loop()
await loop.run_in_executor(None, blockingfunc)
Run Code Online (Sandbox Code Playgroud)
和
loop = asyncio.get_event_loop()
await loop.run_in_executor(None, blockingfunc)
Run Code Online (Sandbox Code Playgroud)
我们什么时候应该使用asyncio.get_running_loop()vs asyncio.get_event_loop()?
Fox*_*Fox 13
根据官方文档, 和 都get_running_loop用于get_event_loop实际获得活动循环,区别在于后者get_event_loop具有更复杂的行为,因此get_running_loop可以广泛用于循环存在性不成问题的应用程序中。
此外,在文档中建议使用run方法来获取事件循环(从Python 3.7版本开始可用),例如
async def main():
await asyncio.sleep(1)
print('hello')
asyncio.run(main())
Run Code Online (Sandbox Code Playgroud)
代替:
async def main():
await asyncio.sleep(1)
print('hello')
loop = asyncio.get_event_loop()
task = loop.create_task(main)
loop.run_forever()
Run Code Online (Sandbox Code Playgroud)
请注意,该run方法解决方案在 Jupyter Notebook 中工作可能会很奇怪。
| 归档时间: |
|
| 查看次数: |
15692 次 |
| 最近记录: |