摘要:解决方案我们可以使用函数建立一个新的事件循环,并使用设置全局的事件循环,这时候就可以多次运行异步的事件循环了,不过最好保存默认的并在事件循环结束的时候还原回去。
背景
我们在Python异步程序编写中经常要用到如下的结构
import asyncio async def doAsync(): await asyncio.sleep(0) #... if __name__ == "__main__": loop = asyncio.get_event_loop() loop.run_until_complete(doAsync()) loop.close()
这当然是很不错的,但当你第二次使用loop的时候程序就会抛出异常RuntimeError: Event loop is closed,这也无可厚非,理想的程序也应该是在一个时间循环中解决掉各种异步IO的问题。
但放在终端环境如Ipython中,如果想要练习Python的异步程序的编写的话每次都要重新开启终端未免太过于麻烦,这时候要探寻有没有更好的解决方案。
我们可以使用asyncio.new_event_loop函数建立一个新的事件循环,并使用asyncio.set_event_loop设置全局的事件循环,这时候就可以多次运行异步的事件循环了,不过最好保存默认的asyncio.get_event_loop并在事件循环结束的时候还原回去。
最终我们的代码就像这样。
import asyncio async def doAsync(): await asyncio.sleep(0) #... def runEventLoop() loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) loop.run_until_complete(doAsync()) loop.close() if __name__ == "__main__": oldloop = asyncio.get_event_loop() runEventLoop() runEventLoop() asyncio.set_event_loop(oldloop)感想
事件循环本来就是要一起做很多事情,在正式的Python代码中还是只用一个默认的事件循环比较好,平时的学习练习的话倒是随意了。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/40805.html
摘要:我在这里将他写的程序恭录于此,单元李航同学不要见怪,如果李航同学认为此举侵犯了自己的知识产权,可以告知我,我马上撤下此代码。我用的是,在输入指令上区别于李同学程序用变量接收了输入的内容。 while,翻译成中文是当...的时候,这个单词在英语中,常常用来做为时间状语,while ... someone do somthing,这种类型的说法是有的。在python中,它也有这个含义,不过...
摘要:是之后引入的标准库的,这个包使用事件循环驱动的协程实现并发。没有能从外部终止线程,因为线程随时可能被中断。上一篇并发使用处理并发我们介绍过的,在中,只是调度执行某物的结果。 asyncio asyncio 是Python3.4 之后引入的标准库的,这个包使用事件循环驱动的协程实现并发。asyncio 包在引入标准库之前代号 Tulip(郁金香),所以在网上搜索资料时,会经常看到这种花的...
摘要:该系列文章入门,编程基础概念介绍变量,条件,函数,循环中的数据类型,,,,在中创建对象学一门编程语言正在变得越来越容易,只要念过高中甚至是初中小学,能熟练聊和懂得一点点软件的人,入门一门编程语言都不在话下。 该系列文章: 《python入门,编程基础概念介绍(变量,条件,函数,循环)》 《python中的数据类型(list,tuple,dict,set,None)》 《在python...
摘要:事件循环是异步编程的底层基石。对事件集合进行轮询,调用回调函数等一轮事件循环结束,循环往复。协程直接利用代码的执行位置来表示状态,而回调则是维护了一堆数据结构来处理状态。时代的协程技术主要是,另一个比较小众。 Coding Crush Python开发工程师 主要负责岂安科技业务风险情报系统redq。 引言 1.1. 存储器山 存储器山是 Randal Bryant 在《深入...
摘要:在讲述有关的时候,提到做游戏的事情后来这个事情一直没有接续。现在就是开始做那个游戏的时候了。游戏过程描述程序运行起来,随机在某个范围内选择一个整数。我们现在做一个很小的程序,也是这样来做。这个游戏还没有完呢,即使用了循环,后面还会继续。 在讲述有关list的时候,提到做游戏的事情,后来这个事情一直没有接续。不是忘记了,是在想在哪个阶段做最合适。经过一段时间学习,看官已经不是纯粹小白了,...
阅读 3382·2023-04-25 20:37
阅读 3141·2021-09-07 09:59
阅读 1663·2019-08-29 12:43
阅读 1183·2019-08-28 18:27
阅读 478·2019-08-26 13:50
阅读 2023·2019-08-26 10:33
阅读 3589·2019-08-23 18:39
阅读 2389·2019-08-23 18:09