python之 协程
协程: 协程是一种用户态的轻量级线程, 即协程是由用户程序自己控制调度的
1.Greenlet
import time
# import greenlet
from greenlet import greenlet
def f1(s):
print('第一次f1'+s)
g2.switch('taibai') #切换到g2这个对象的任务去执行
time.sleep(1)
print('第二次f1'+s)
g2.switch()
def f2(s):
print('第一次f2'+s)
g1.switch()
time.sleep(1)
print('第二次f2'+s)
g1 = greenlet(f1) #实例化一个greenlet对象,并将任务名称作为参数参进去
g2 = greenlet(f2)
g1.switch('alex') #执行g1对象里面的任务
2.Gevent
import gevent
from gevent import monkey;monkey.patch_all()
import time
import threading
def f1():
print('第一次f1')
# print(threading.current_thread().getName())
# gevent.sleep(1)
time.sleep(2)
print('第二次f1')
def f2():
# print(threading.current_thread().getName())
print('第一次f2')
# gevent.sleep(2)
time.sleep(2)
print('第二次f2')
s = time.time()
g1 = gevent.spawn(f1) #异步提交了f1任务
g2 = gevent.spawn(f2) #异步提交了f2任务
# g1.join()
# g2.join()
gevent.joinall([g1,g2])
e = time.time()
print('执行时间:',e-s)
print('主程序任务')


浙公网安备 33010602011771号