Python之协程(11)

协程:微线程

进程>线程>协程

greenlet(不够智能,手动开启(切换)多个协程)【生成器】

#greenlet 完成任务
import time
from greenlet import greenlet

def a():
    for i in range(50):
        print("A" + str(i))
        gb.switch()
        time.sleep(0.1)

def b():
    for i in range(50):
        print("B" + str(i))
        gc.switch()
        time.sleep(0.1)

def c():
    for i in range(50):
        print("C" + str(i))
        ga.switch()
        time.sleep(0.1)


if __name__ == "__main__":
    ga = greenlet(a)
    gb = greenlet(b)
    gc = greenlet(c)

    ga.switch()

gevent和猴子补丁

import gevent
import time
from gevent import monkey

monkey.patch_all()

def a():
    for i in range(50):
        print("A" + str(i))
        time.sleep(0.1)

def b():
    for i in range(50):
        print("B" + str(i))
        time.sleep(0.1)

def c():
    for i in range(50):
        print("C" + str(i))
        time.sleep(0.1)


if __name__ == "__main__":
    g1 = gevent.spawn(a)
    g2 = gevent.spawn(b)
    g3 = gevent.spawn(c)

    g1.join()
    g2.join()
    g3.join()

 

你可能感兴趣的:(编程/Python)