二十一.Python协程

Python协程

#greenlet模块

#协程

#协程相对于线程与进程,协程可以控制,线程进程不受到人为的控制
#
#greenlet  可以控制协程的执行与暂停,greenlet不具备自动切换进程的能力
#
#gevent    当遇到阻塞,gevent会自动切换,使cpu利用率达到将近100%
#

#greenlet

#使用
#gr1=greenlet(target)  创建协程
#gr2=greenlet(target,gr1) 创建gr2协程,运行过后切换到gr1线程
#gr1.switch()         手动切换到gr1协程的方法


#导入greenlet协程模块
from greenlet import greenlet
def test1():
    print("12")
    #切换到gr2协程
    gr2.switch()
    print("34")
def test2():
    print("56")
    #切换到gr1协程
    gr1.switch()

if __name__ == '__main__':
    #创建协程
    gr1 = greenlet(test1)
    gr2 = greenlet(test2)
    #从主线程切换到gr1协程
    gr1.switch()
    print("78")



# genev  模块

#gevent    当遇到阻塞,gevent会自动切换,使cpu利用率达到将近100%

#gevent协程模块自动执行切换,减少了手动切换协程顺序的麻烦

#使用
#gevent.joinall([协程,协程1,协程2])  将协程加入到协程列表
#gevent.spawn(target)  创建协程
#gevent.joinall([gevent.spawn(target1),gevent.spawn(target2)])# 结合一起

import gevent
def test1():
    print(12)
    print(34)
def test2():
    print(56)
if __name__ == '__main__':
    gevent.joinall([
        gevent.spawn(test1),
        gevent.spawn(test2)
    ])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值