Python 协程的使用
创始人
2025-05-31 15:57:22
0

异步IO:就是发起一个IO操作(如:网络请求,文件读写等),这些操作一般是比较耗时的,不用等待它结束,可以继续做其他事情,结束时会发来通知。

协程:又称为微线程,在一个线程中执行,执行函数时可以随时中断,由程序(用户)自身控制,执行效率极高,与多线程比较,没有切换线程的开销和多线程锁机制。

python中异步IO操作是通过asyncio来实现的。

await

        await 的解释,认真看文字,逐步理解,你肯定能看懂这最通俗的解释

        await 就是把当前协程对象给挂起,暂时不管。await 后边一般放协程对象,但也可以放task或future对象

        举个例子,喝茶需要烧水,洗杯子,泡茶 ,烧水是需要时间的,await 烧水,就是等待水烧开,人就不管烧水这个事情,人可以去洗杯子。当水烧开了之后再接着烧开水的后一步。

        放到计算机里面,人就是cpu,烧水、洗杯子就是一个个协程函数,每当一个await 一个协程对象,cpu就切换出去,去完成其他的协程任务,等到该协程对象完成后,cpu在切回来,完成接下来的任务

import asyncioasync def func1():print(f'我是函数1')await asyncio.sleep(3)print(f'我就是函数1')  async def func2():print(f'我是函数2')await asyncio.sleep(1)print(f'我就是函数2')  

        这里有两个协程对象,func1和func2,打印了【我是函数1】后,因为await了,cpu就切出去了,不管了该任务了,而是去完成其他协程任务,等待他自己暂停三秒后,cpu才会切回来再打印我就是函数1;注意有await,cpu切出去发现还有其他任务即func2,所以其打印了【我是函数2】,然后又await了,cpu又切出去了,但是没有其他任务了,此时过去了1秒,sleep(1)已经完成,cpu重新切回来,打印【我就是函数2】,又过去2秒,func1中的sleep(3)也完成了,cpu切回去func1,然后打印【我就是函数1】      

        执行大概的流程

        func1执行 -> print 我是函数1 -> await cpu切出去

        func2执行 -> print 我是函数2 -> await cpu切出去

        过了1秒

        asyncio.sleep(1)完成 -> cpu切回来func2 -> print  我就是函数2 

        过了2秒

        asyncio.sleep(3)完成 -> cpu切回来func1 -> print 我就是函数1

                

async.run

        async.run(),里面放的是一个协程对象。调用协程函数的方法,即开启该线程

asyncio.wait()

        其也是一个协程函数,返回一个协程对象。

        asyncio.wait(),里面放的是一个装着协程对象的列表

        帮助把所有多个协程任务进行封装处理,最后返回一个包含所有传入的协程任务的协程对象

一个简单的协程程序示例

import asyncio
import timeasync def func1():print(f'我是函数1')await asyncio.sleep(3)print(f'我就是函数1')async def func2():print(f'我是函数2')await asyncio.sleep(1)print(f'我就是函数2')async def func3():print(f'我是函数3')await asyncio.sleep(2)print(f'我就是函数2')async def main():tasks = [asyncio.create_task(func1),asyncio.create_task(func2),asyncio.create_task(func3),]await asyncio.wait(tasks)if __name__ == '__main__':start_time = time.time()asyncio.run(main())print(f'用时:{time.time()-start_time}')

        

相关内容

热门资讯

原创 俄... 编辑:G 2026年1月,俄罗斯主流媒体《生意人报》曝光了一则重磅消息,就像在全球商业圈扔了一颗深水...
一揽子政策公布!事关贷款贴息、... 今天(20日),财政部官网连续发布5个文件,涉及个人消费贷、民间投资等领域。 “延长、扩大、提高”成...
一个隐秘风口,微信成寡头了 出品|虎嗅黄青春频道 作者|商业消费主笔 黄青春 题图|视觉中国 当聒噪的短剧让人直呼上头时,一个更...
弃购芯片设计、锁定双盈利引擎,... 停牌14天后,盈方微(000670.SZ)于1月20日携重大资产重组预案复牌。预案显示,公司拟以发行...
布局运动医学领域 爱博医疗拟收... 《科创板日报》1月20日讯(记者 黄修眉)爱博医疗今日(1月20日)晚间公告称,与德美联合(重庆)医...
一个月内两度抛出并购计划,明德... 自去年底宣布收购武汉必凯尔救助用品有限公司(以下简称“必凯尔”)100%股权后,明德生物(00293...
重庆A股40家上涨 新大正、康... 1月20日,79家重庆A股上市公司中有40家上涨,3家平收,下跌36家。 同花顺iFinD数据显示,...
原创 广... 观点网汇悦台,作为广州顶豪的代名词,每一套房产的易主或被拍卖,都能勾起市场对财富起落的好奇。 近日,...
莱欧制药携手合作,助力罕见皮肤... 在现代医学的发展中,罕见皮肤病的治疗始终面临着巨大的挑战。这些疾病的发病率低,导致很多患者在寻求有效...
资金动向 | 北水连续12日出... 1月20日,南下资金净买入港股36.63亿港元。 其中,净买入腾讯控股6.63亿、美团-W 5.73...
靠“经营质量”穿越周期,豪华品... "在不给经销商发红包的前提下,林肯在豪华品牌中的盈利能力是第一名"。1月14日,林肯中国总裁贾鸣镝在...
郑商所优化纯碱期货交割体系 据郑商所发布1月20日消息,郑商所近期通过交割区域扩容、统一交割提货模式两大举措,对纯碱期货交割体系...
美日债市雪崩,黄金美元为何“冰... 来源:市场资讯 来源:汇通网 汇通财经APP讯——周二(1月20日),全球金融市场经历了一场由主权债...
携程反垄断调查再思考:为何它比... 2026年1月14日,国家市场监管总局对携程集团涉嫌滥用市场支配地位立案调查。消息一出,携程港股两天...
白癜风专家林华:运动对白癜风康... 适当运动对白癜风患者的身体状态调节有积极作用,能增强体质、缓解压力,间接为皮肤状态稳定提供助力,但核...
多家银行卫星近期集中上天 近期商业航天热潮涌起,银行参与积极性也被调动起来。记者注意到,近期浦发、招商等多家银行卫星成功发射,...
纳德拉达沃斯发出警示:GDP增... 截图来自世界经济论坛官网直播视频 “未来,任何地方的GDP增长都将与‘每美元每瓦特产生的算力’直接相...
港媒:中国医药行业成经济增长新... 参考消息网1月20日报道据香港《南华早报》网站1月19日报道,随着主要制药企业加大研发和生产投入,中...
冯德莱恩:欧盟决定永久冻结俄罗... 当地时间20日,欧盟委员会主席冯德莱恩在瑞士达沃斯发表讲话表示,欧洲需要一种紧迫感,同时欧洲已开始推...
开门红这类存款走俏,黄金结构性... 本文来源:时代财经 作者:张昕迎 图片来源:图虫创意 黄金投资热潮下,存款也蹭上“黄金概念”。 在...