协程: 协程是一种用户态的轻量级线程, 即协程是由用户程序自己控制调度的
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('主程序任务')