協程: 協程是一種用戶態的輕量級線程, 即協程是由用戶程序本身控制調度的異步
1.Greenletspa
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('主程序任務')