pythongreenlet如何交替運(yùn)行
1、greenlet說明
greenlet是一個(gè)基于Greenlet實(shí)現(xiàn)的網(wǎng)絡(luò)庫,它使用greenlet來實(shí)現(xiàn)協(xié)同程序。其基本思想是,當(dāng)greenlet遇到IO操作時(shí),例如訪問網(wǎng)絡(luò)時(shí),它會(huì)自動(dòng)切換到其他greenlet,直到IO操作完成,然后在適當(dāng)?shù)臅r(shí)候切換回繼續(xù)執(zhí)行。因?yàn)镮O操作非常耗時(shí),而且常常使程序處于等待狀態(tài),所以使用gevent來自動(dòng)切換協(xié)程,可以確保運(yùn)行的是greenlet,而非等待IO操作。
2、實(shí)例
可以通過gevent.sleep()交出控制權(quán):
deftest(n):
foriinrange(n):
print(gevent.getcurrent(),i)
gevent.sleep(1)
當(dāng)然在實(shí)際的代碼里,我們不會(huì)用gevent.sleep()去切換協(xié)程,而是在執(zhí)行到IO操作時(shí)gevent會(huì)自動(dòng)完成,所以gevent需要將Python自帶的一些標(biāo)準(zhǔn)庫的運(yùn)行方式由阻塞式調(diào)用變?yōu)閰f(xié)作式運(yùn)行。
以上就是pythongreenlet交替運(yùn)行的方法,希望能對大家有所幫助,更多Python學(xué)習(xí)教程請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。