当前位置:首页 > 教育

asyncio Python 的异步 IO:Asyncio 简介

Python中的Asyncio类似于Boost。C++中的Asio。

异步IO是指你发起一个IO操作,可以继续做其他事情,而不用等它结束。结束后会通知你。

Asyncio是一种并发方式。对于Python来说,并发也可以通过线程和多处理来实现。

Asyncio没有带来真正的并行。当然,因为GIL(全局解释器锁),Python的多线程并不能带来真正的并行。

可以交给asyncio执行的任务叫做协同任务。一个协同过程可以放弃执行,而将机会让给其他协同过程(即从或等待中产生)。

定义协同

协同学的定义需要Async def语句。

做一些工作是一个协同的过程。

准确地说,do_some_work是一个协同函数,可以用asyncio.iscoroutinefunction来验证:

这个程序什么都没做。我们让它休眠几秒钟来模拟实际工作负载:

在解释等待之前,有必要解释一下协和能做什么。协调可以:

Asyncio.sleep也是一个协同过程,所以wait asyncio.sleep(x)只是在等待另一个协同过程。参见asyncio.sleep的文档:

运行协调

调用协同学函数,协同学不会开始运行,只会返回一个协同学对象,可以用asyncio.iscoroutine验证:

这里还有一个警告:

有两种方法可以让这个协同对象运行:

简单来说,只有循环运行,协同过程才能运行。

先获取当前线程的默认循环,然后把coordinator对象交给loop.run _直到_complete,然后coordinator对象就会在循环中运行。

Run _直到_complete是一个阻塞调用,直到协调器运行后才返回。这从函数名上不难看出。

run _直到_complete的参数是一个未来,但是我们在这里传递的是一个协同对象,之所以能够做到这一点,是因为内部进行了检查,并且通过survey _ future函数将协同对象包装成一个未来。因此,我们可以写得更清楚:

完整代码:

回调

如果协商是IO读操作,我们希望在它读完数据后得到通知,方便下一步的数据处理。这个需求可以通过向future添加回调来实现。

多重协同学

在实际项目中,经常有多个协同学同时在一个循环中运行。为了给循环提供多个协同学,需要asyncio . collect函数。

或者将协调过程放在列表的第一位:

运行结果:

这两个协同过程同时运行,因此等待时间不是1+3 = 4秒,而是更长的时间。

参考函数集合的文档:

发现也可以传递未来给它:

聚集作为一种聚合,将多个未来打包成一个未来,因为loop.run _直到_complete只接受一个未来。

运行_直到_完成并运行_永远

我们已经通过run _直到_complete运行了循环,当未来结束时,run _直到_complete将返回。

现在改为使用run _ every:

三秒后,未来结束,但程序不会退出。Run_forever将一直运行,直到调用stop,但您不能按如下方式调整stop:

Run_forever不返回,stop永远不会被调用。因此,停止只能在协调过程中进行调整:

如果有多个协同学在循环中运行,这并非没有问题:

这个循环在第二架协和式飞机结束之前停止了--被第一架结束的协和式飞机停止了。

为了解决这个问题,您可以使用聚集将多个协同程序合并到一个未来,添加一个回调,然后停止回调中的循环。

但如果关闭,它就不能再运行:

建议调用loop.close彻底清洗循环对象,以防误用。

收集与等待

asyncio . collect和asyncio.wait具有类似的功能。

见StackOverflow:asyncio . collect vs asyncio .等具体区别。

计时器

C++ Boost。AsIO提供IO对象定时器,但是Python本身不支持定时器,但是可以通过asyncio.sleep来模拟..

*声明:推送的内容和图片来自互联网,部分内容会有改动,版权归原作者所有。如果来源信息有误或侵犯权益,请联系我们进行删除或授权。

-结束-

1.《asyncio Python 的异步 IO:Asyncio 简介》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《asyncio Python 的异步 IO:Asyncio 简介》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1520003.html

上一篇

乐投 乐投瑞丰庆女排逆转 奥运美女大秀身材

下一篇

寻找那达慕 一部被忽略的国产儿童片:《寻找那达慕》,人性的找寻和救赎

大筒木一乐什么梗 大筒木一乐原来不是一个梗,网友们在番外篇中发现了他真正的实力

  • 大筒木一乐什么梗 大筒木一乐原来不是一个梗,网友们在番外篇中发现了他真正的实力
  • 大筒木一乐什么梗 大筒木一乐原来不是一个梗,网友们在番外篇中发现了他真正的实力
  • 大筒木一乐什么梗 大筒木一乐原来不是一个梗,网友们在番外篇中发现了他真正的实力
大筒木一乐 大筒木一乐原来不是一个梗,网友们在番外篇中发现了他真正的实力

大筒木一乐 大筒木一乐原来不是一个梗,网友们在番外篇中发现了他真正的实力

一乐大叔是拉面里鸣人一个很普通的掌柜。但是鸣人粉丝认为他的身份不简单。有人认为伊乐大叔的战力是鸣人中最强的。他之所以没有表现出来,是因为他一直在隐藏自己的实力。有网友开玩笑说,大慕童一乐本来就不是梗。他真的有神秘的力量...

一个木一个乐 大筒木一乐原来不是一个梗,网友们在番外篇中发现了他真正的实力

一个木一个乐 大筒木一乐原来不是一个梗,网友们在番外篇中发现了他真正的实力

一乐大叔是拉面里鸣人一个很普通的掌柜。但是鸣人粉丝认为他的身份不简单。有人认为伊乐大叔的战力是鸣人中最强的。他之所以没有表现出来,是因为他一直在隐藏自己的实力。有网友开玩笑说,大慕童一乐本来就不是梗。他真的有神秘的力量...

吸塑包装制品 吸塑包装未来三年将成为包装行业的主流

吸塑包装制品 吸塑包装未来三年将成为包装行业的主流

塑料包装材料是商品包装的物质基础,是商品包装所有功能的载体,是构成商品包装使用价值的最基本要素。研究和发展包装,必须从这个基本要素入手。那我给你介绍一下塑料制品; 产品的主要分类 1、如果按照材料的厚度分类,可以分为...

徐钰涵 (收官)过程很精彩,结果很正常!悦隆获得城市业余联赛甲组总决赛冠军!今年的水平真心有点高!—《乒乓上海》

  • 徐钰涵 (收官)过程很精彩,结果很正常!悦隆获得城市业余联赛甲组总决赛冠军!今年的水平真心有点高!—《乒乓上海》
  • 徐钰涵 (收官)过程很精彩,结果很正常!悦隆获得城市业余联赛甲组总决赛冠军!今年的水平真心有点高!—《乒乓上海》
  • 徐钰涵 (收官)过程很精彩,结果很正常!悦隆获得城市业余联赛甲组总决赛冠军!今年的水平真心有点高!—《乒乓上海》
香港网上购物 香港人爱内地淘宝网购或成未来消费模式

香港网上购物 香港人爱内地淘宝网购或成未来消费模式

图片来源:网络由于其质优价廉,大陆人喜欢在香港购物,每到假期都会大包小包“扫货”。当内地的“扫地组”涌向铜锣湾时,香港同胞却反其道而行,去香港以外的地方购物。为什么守护“购物天堂”的香港人会来到这里?原来,他们在大陆找...

新桓结衣 新垣结衣自曝结婚对象与早年痛苦经历

新桓结衣 新垣结衣自曝结婚对象与早年痛苦经历

关注早期日本微信公众号(ID: izaodao)了解日本 回复“搜狐”,获得价值399元的精品课程。 早点说日语,日本爱好者的聚集地! 明星的私生活一直是粉丝们非常关心的问题 大家都想多了解一下自己的爱豆 新垣结衣 作...

浦江论坛网 浦江论坛之“创·未来”亚洲创新创业合作论坛举行

东方记者朱伯特。com,9月24日报道:今天下午,浦江论坛“共创未来”亚洲创新创业合作论坛暨2016“上海创业”创新创业大赛颁奖仪式在上海国际会议中心举行。活动邀请了政府代表、国内外投资界代表、孵化器代表、企业家、优秀...