未加密-并發(fā)班tuple老師greenlet與gevent08gevent_第1頁
未加密-并發(fā)班tuple老師greenlet與gevent08gevent_第2頁
未加密-并發(fā)班tuple老師greenlet與gevent08gevent_第3頁
未加密-并發(fā)班tuple老師greenlet與gevent08gevent_第4頁
未加密-并發(fā)班tuple老師greenlet與gevent08gevent_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余15頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Python并發(fā)課教室講師:Tuple時(shí)間:2018年1月教學(xué)監(jiān)督熱線 教學(xué)監(jiān)督熱線 010203階段一: 協(xié)程階段二: greenlet 協(xié)程 階段三: gevent 協(xié)程本節(jié)知識點(diǎn)階段一協(xié)程教學(xué)監(jiān)督熱線 協(xié)程 問題引入01020304問題一: 生成器與函數(shù)的區(qū)別?問題二: 協(xié)程與生成器的區(qū)別? 問題三: 協(xié)程算并發(fā)嘛?問題四: 協(xié)程的意義?預(yù)留如果我們考慮的是,同時(shí)服務(wù)多個(gè)客戶端,那么他不算!如果某一個(gè)協(xié)程被網(wǎng)絡(luò)阻塞了,那么整個(gè)線程(進(jìn)程)都被阻塞。協(xié)程本身不能避開阻塞。 任意時(shí)刻,只有一個(gè)協(xié)程在執(zhí)行。從執(zhí)行單元上來看,它的確屬于并發(fā)。階段二greenlet教學(xué)監(jiān)督熱線 greenlet

2、問題引入010203問題一: 什么是greenlet ?問題二: 如何使用 greenlet ?問題三: 為什么需要greenlet ?什么是 greenlet ?雖然CPython(標(biāo)準(zhǔn)Python)能夠通過生成器來實(shí)現(xiàn)協(xié)程, 但使用起來還并不是很方便。與此同時(shí),Python的一個(gè)衍生版 Stackless Python 實(shí)現(xiàn)了原生的協(xié)程,它更利于使用。于是,大家開始將 Stackless 中關(guān)于協(xié)程的代碼 單獨(dú)拿出來做成了CPython的擴(kuò)展包。這就是 greenlet 的由來,因此 greenlet 是底層實(shí)現(xiàn)了原生協(xié)程的 C擴(kuò)展庫。sudo pip3 install greenletg

3、reenlet 的基本使用greenlet 的價(jià)值價(jià)值一: 高性能的原生協(xié)程價(jià)值二: 語義更加明確的顯式切換價(jià)值三: 直接將函數(shù)包裝成協(xié)程,保持原有代碼風(fēng)格階段三gevent協(xié)程教學(xué)監(jiān)督熱線 gevent 問題引入010203問題一: 什么是 gevent ?問題二: gevent 的價(jià)值是什么 ?問題三: 如何使用 gevent ?什么是 gevent?sudo pip3 install gevent雖然,我們有了 基于 epoll 的回調(diào)式編程模式,但是卻難以使用。即使我們可以通過配合 生成器協(xié)程 進(jìn)行復(fù)雜的封裝,以簡化編程難度。但是仍然有一個(gè)大的問題: 封裝難度大,現(xiàn)有代碼幾乎完全要重寫

4、gevent,通過封裝了 libev(基于epoll) 和 greenlet 兩個(gè)庫。幫我們做好封裝,允許我們以類似于線程的方式使用協(xié)程。以至于我們幾乎不用重寫原來的代碼就能充分利用 epoll 和 協(xié)程 威力。gevent 的價(jià)值價(jià)值一: 使用基于 epoll 的 libev 來避開阻塞價(jià)值二: 使用基于 gevent 的 高效協(xié)程 來切換執(zhí)行遇到阻塞就切換到 另一個(gè)協(xié)程繼續(xù)執(zhí)行 !價(jià)值三: 只在遇到阻塞的時(shí)候切換, 沒有輪需的開銷,也沒有線程的開銷gevent 并發(fā)服務(wù)器階段四gevent 協(xié)程通信教學(xué)監(jiān)督熱線 gevent通信 問題引入0102問題一: 協(xié)程之間不是能通過switch通信嘛?問題二: 那為什么還要考慮通信問題?是的,由于 gevent 基于 greenlet,所以可以。因?yàn)?gevent 不需要我們使用手動(dòng)切換,而是遇到阻塞就切換,因此我們不會去使用swit

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論