摘要:问题背景是版本引入的标准库,直接内置了对异步的支持。最近我在多线程调用使用方法的时候,出现报错后来查过一些资料,发现不允许嵌套事件出现,需要引入。总结给自己留个记录,防止忘了。如果对你有用的话,点个赞吧。
asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。最近我在多线程调用使用asyncio方法的时候,出现报错:
This event loop is already running
后来查过一些资料,发现asyncio不允许嵌套事件出现,需要引入nest_asyncio。
引入nest_asyncio模块
pip install nest_asyncio -i https://pypi.douban.com/simple
代码添加
import nest_asyncionest_asyncio.apply()
其他的不需要改动。
给自己留个记录,防止忘了。如果对你有用的话,点个赞吧。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/124514.html
摘要:所以在第一遍阅读官方文档的时候,感觉完全是在梦游。通过或者等待另一个协程的结果或者异常,异常会被传播。接口返回的结果指示已结束,并赋值。取消与取消不同。调用将会向被包装的协程抛出。任务相关函数安排协程的执行。负责切换线程保存恢复。 Tasks and coroutines 翻译的python官方文档 这个问题的恶心之处在于,如果你要理解coroutine,你应该理解future和tas...
摘要:解决方案我们可以使用函数建立一个新的事件循环,并使用设置全局的事件循环,这时候就可以多次运行异步的事件循环了,不过最好保存默认的并在事件循环结束的时候还原回去。 背景 我们在Python异步程序编写中经常要用到如下的结构 import asyncio async def doAsync(): await asyncio.sleep(0) #... if __name__...
摘要:是并发的一种方式。并不能带来真正的并行。可交给执行的任务,称为协程。输出等待三秒钟程序退出现在改用输出等待三秒钟程序没有退出三秒钟过后,结束,但是程序并不会退出。但是如果关闭了,就不能再运行了此处异常建议调用,以彻底清理对象防止误用。 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知。 Asyncio 是并发(concurr...
摘要:是之后引入的标准库的,这个包使用事件循环驱动的协程实现并发。没有能从外部终止线程,因为线程随时可能被中断。上一篇并发使用处理并发我们介绍过的,在中,只是调度执行某物的结果。 asyncio asyncio 是Python3.4 之后引入的标准库的,这个包使用事件循环驱动的协程实现并发。asyncio 包在引入标准库之前代号 Tulip(郁金香),所以在网上搜索资料时,会经常看到这种花的...
摘要:具有以下基本同步原语子进程提供了通过创建和管理子进程的。虽然队列不是线程安全的,但它们被设计为专门用于代码。表示异步操作的最终结果。 Python的asyncio是使用 async/await 语法编写并发代码的标准库。通过上一节的讲解,我们了解了它不断变化的发展历史。到了Python最新稳定版 3.7 这个版本,asyncio又做了比较大的调整,把这个库的API分为了 高层级API和...
阅读 2440·2021-11-23 09:51
阅读 1866·2021-10-13 09:40
阅读 1372·2021-09-30 10:01
阅读 588·2021-09-26 09:46
阅读 2232·2021-09-23 11:55
阅读 1385·2021-09-10 10:51
阅读 2240·2021-09-09 09:33
阅读 2225·2019-08-29 17:25