day36 協程介紹/yield實現協程/補充/gevent模塊/網絡IO模型介紹/阻塞IO模型/非阻塞IO模型

一、協程:
單線程實現併發
在應用程序裏控制多個任務的切換+保存狀態
優勢:
應用程序級別速度要遠遠高於操做系統的切換
缺點:
多個任務一旦有一個阻塞沒有切,整個線程都阻塞在原地
該線程內的其餘的任務都不能執行了

一旦引入協程,就須要檢測單線程下全部的IO行爲,
實現遇到IO就切換,少一個都不行,覺得一旦 一個任務阻塞了,整個線程就阻塞了,
其餘的任務即使是能夠計算,可是也沒法運行了

二、協程序的目的:
想要在單線程下實現併發
併發指的是多個任務看起來是同時運行的
併發=切換+保存狀態python

 

yield實現協程網絡

yield能夠實現協程,可是沒法作出有意義的提高效率的協程併發

 gevent模塊的使用spa

from gevent import monkey,spawn;monkey.patch_all()
import time

def eat(name):
    print('%s eat 1' %name)
    time.sleep(3)
    print('%s eat 2' %name)

def play(name):
    print('%s play 1' %name)
    time.sleep(4)
    print('%s play 2' %name)

start=time.time()
g1=spawn(eat,'egon')  #內置的一個模塊
g2=spawn(play,'zmy')

g1.join()
g2.join()
# eat('ooo')
# play('rrr')
print(time.time() - start)
print(g1)
print(g2)

 

練習操作系統

等補全線程

網絡IO模型介紹協程

阻塞IO模型blog

非阻塞IO模型event

相關文章
相關標籤/搜索