栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python—协程的应用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python—协程的应用

greenlet 模块实现协程:
from greenlet import greenlet

def fun1():
    print(1)    #2
    gr2.switch()#3
    print(2)    #6
    gr2.switch()#7
    pass

def fun2():
    print(3)    #4
    gr1.switch()#5
    print(4)    #8
    pass

gr1=greenlet(fun1)
gr2=greenlet(fun2)

gr1.switch()    #1
yield关键字多协程:
def fun1():
    yield 1
    yield from fun2()
    yield 2
    
def fun2():
    yield 3
    yield 4

f1=fun1()
for item in f1:
    print(item)
asyncio:
import asyncio

@asyncio.coroutine
def fun1():
    print(1)
    yield from asyncio.sleep(1)
    print(2)

@asyncio.coroutine
def fun2():
    print(3)
    yield from asyncio.sleep(2)
    print(4)

tasks=[
    asyncio.ensure_future(fun1()),
    asyncio.ensure_future(fun2())
]

loop=asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
#遇到io阻塞自动切换
async & await关键字:
import asyncio


async def fun1():
    print(1)
    await asyncio.sleep(1)
    print(2)

async def fun2():
    print(3)
    await asyncio.sleep(2)
    print(4)

tasks=[
    asyncio.ensure_future(fun1()),
    asyncio.ensure_future(fun2())
]
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767142.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号