上一篇文章主要講述協(xié)程原理:同步框架異步化改造—任務(wù)協(xié)程化 (一)
這篇文章主要講述項(xiàng)目?jī)?nèi)部的實(shí)踐腿短,實(shí)踐問(wèn)題塔淤,具體問(wèn)題具體分析僚焦。手動(dòng)從0開(kāi)始寫(xiě)一個(gè)協(xié)程調(diào)度功能,考慮的東西很多预侯。對(duì)于當(dāng)前的項(xiàng)目朗伶,時(shí)間不允許屯断⊥哑矗考慮到內(nèi)部項(xiàng)目是python代碼瞒瘸,所以就使用了gevent調(diào)度。gevent的patch功能熄浓,patch掉底層的io接口情臭。這樣就能做到不改業(yè)務(wù)一行代碼,化同步為異步調(diào)用赌蔑。我們
首先提一下 greenlet庫(kù)俯在。這個(gè)庫(kù)才是真正提供協(xié)程切換的接口庫(kù)。其實(shí)惯雳,我們只需要greenlet庫(kù)就可以朝巫,按照之前的ucontext協(xié)程調(diào)度的方式,用greenlet提供的switch接口進(jìn)行切換石景∨常可以理解為,greenlet和ucontext協(xié)程庫(kù)提供的功能是一樣的:都是提供最基本的切換協(xié)程功能潮孽。怎么調(diào)度揪荣?還得自己去封裝。而gevent庫(kù)就提供了這一層封裝往史。
詳情見(jiàn)我的Github博客:
> 更多干貨仗颈,關(guān)注公眾號(hào):奇伢云存儲(chǔ)。原創(chuàng)不易椎例,謝謝大家支持挨决。