python之 協程

協程: 協程是一種用戶態的輕量級線程, 即協程是由用戶程序本身控制調度的異步

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('主程序任務')
相關文章
相關標籤/搜索