協程: 協程是一種使用者態的輕量級執行緒, 即協程是由使用者程式自己控制排程的
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(`主程式任務`)