二十一.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)
    ])

猜你喜欢

转载自blog.csdn.net/qq_39663113/article/details/85949076