Python实现多任务(3)#
协程
使用gevent完成协程
import gevent
import time
from gevent import monkey
monkey.patch_all()
def x1(v):
for i in range(v):
print(gevent.getcurrent(), i)
#gevent.sleep(1) #耗时操作切换任务
time.sleep(0.5)
def x2(v):
for i in range(v):
print(gevent.getcurrent(), i)
gevent.sleep(0.5)
def x3(v):
for i in range(v):
print(gevent.getcurrent(), i)
#gevent.sleep(0.5)
g1 = gevent.spawn(x1, 5) #创建greenlet对象
g2 = gevent.spawn(x2, 5)
g3 = gevent.spawn(x3, 5)
g1.join()
g2.join()
g3.join()
gevent.joinall([gevent.spawn(x1, 4),
gevent.spawn(x2, 4),
gevent.spawn(x3, 4)])
使用greenlet完成协程
import time
from greenlet import greenlet
def test_1():
while True:
print(' 1 ')
time.sleep(0.5)
t2.switch()
def test_2():
while True:
print(" 2 ")
time.sleep(0.5)
t1.switch()
t1 = greenlet(test_1)
t2 = greenlet(test_2)
t1.switch()