Python -asyncio笔记

来源:互联网 发布:php全栈框架 编辑:程序博客网 时间:2024/06/06 04:03

asyncio

事件循环是asyncio提供的核心运行机制

loop = asyncio.get_event_loop() # 获取一个事件循环(主线程才可以调用)task = loop.create_task(task)  # 创建一个任务loop.run_until_complete(task) # 运行任务

开始一个协程

import asyncioasync def coroutine():    print('in coroutine')event_loop = asyncio.get_event_loop()try:    print('starting coroutine')    coro = coroutine()    print('entering event loop')    event_loop.run_until_complete(coro)finally:    print('closing event loop')    event_loop.close()

从协程返回值

import asyncioasync def coroutine():    print('in coroutine')    return 'result'event_loop = asyncio.get_event_loop()try:    return_value = event_loop.run_until_complete(coroutine())    print('it returned: {}'.format(return_value))finally:    event_loop.close()第一步是获取事件的引用,可以使用默认的循环类型,或者可以实例化特定的循环类型。在这个例子中,用默认循环,run_until_complete()方法使用coroutine对象启动循环,并在协同程序退出时停止循环

协程传参

一个协同程序可以启动另一个协同程序,并等待结果。 这使得更容易将任务分解成可重用的部分。 以下示例有两个阶段必须按顺序执行,但可以与其他操作同时运行。
import asyncio

async def outer():    print('in outer')    print('waiting for result1')    result1 = await phase1()    print('waiting for result2')    result2 = await phase2(result1)    return (result1, result2)async def phase1():    print('in phase1')    return 'result1'async def phase2(arg):    print('in phase2')    return 'result2 derived from {}'.format(arg)event_loop = asyncio.get_event_loop()try:    return_value = event_loop.run_until_complete(outer())    print('return_value:{}'.format(return_value))finally:    event_loop.close()     

下面这两个都是放个多个协程

asyncio.gather()  # 有区别asyncio.wait()coros = [do_some_work(loop, 1), do_some_work(loop, 3)]loop.run_until_complete(asyncio.wait(cors))loop.run_until_complete(asyncio.gather(*cors))
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 11个月宝宝认生怎么办 3个月宝宝认人怎么办 3个月的宝宝认生怎么办 两个月的宝宝睡觉一惊一惊怎么办 六个月宝宝不喜欢喝水怎么办 三岁宝宝尿多怎么办 一岁的宝宝尿少怎么办 一岁宝宝尿黄怎么办 三岁宝宝尿黄怎么办 5个月宝宝认生怎么办 3岁宝宝怕生胆小怎么办 2岁宝宝怕生胆小怎么办 1岁半宝宝认生怎么办 宝宝认人一直哭怎么办 七个月宝宝认人怎么办 一个月宝宝认人怎么办 2个多月宝宝认人怎么办 婴儿认人一直哭怎么办 六个月宝宝认人怎么办 十一个月宝宝断奶后辅食怎么办 6个月宝宝不会坐怎么办 7个月宝宝坐不住怎么办 三个月宝宝白天闹觉怎么办 3个月宝宝不追声怎么办 一岁宝宝垃肚子怎么办 新生儿四天没大便怎么办老放屁 新生儿四五天不大便怎么办 新生儿五天没解大便怎么办 婴儿五天没拉大便怎么办 宝宝45天不拉屎怎么办 儿童4天不大便怎么办 4一5天不大便怎么办 俩月的宝宝便秘怎么办 宝宝6天没大便怎么办 新生儿3天不大便怎么办 50天宝宝几天没有大便怎么办 宝宝一吃奶就拉怎么办 2个月宝宝不拉屎怎么办 吃苹果呛到气管怎么办 三个月宝宝五天没拉大便了怎么办 三个月的宝宝五天不大便怎么办