實(shí)例講解python中的協(xié)程
python協(xié)程
線程和進(jìn)程的操作是由程序觸發(fā)系統(tǒng)接口,最后的執(zhí)行者是系統(tǒng);協(xié)程的操作則是程序員。
協(xié)程存在的意義:對(duì)于多線程應(yīng)用,CPU通過(guò)切片的方式來(lái)切換線程間的執(zhí)行,線程切換時(shí)需要耗時(shí)(保存狀態(tài),下次繼續(xù))。協(xié)程,則只使用一個(gè)線程,在一個(gè)線程中規(guī)定某個(gè)代碼塊執(zhí)行順序。
協(xié)程的適用場(chǎng)景:當(dāng)程序中存在大量不需要CPU的操作時(shí)(IO),適用于協(xié)程;
event loop是協(xié)程執(zhí)行的控制點(diǎn), 如果你希望執(zhí)行協(xié)程, 就需要用到它們。
event loop提供了如下的特性:
注冊(cè)、執(zhí)行、取消延時(shí)調(diào)用(異步函數(shù))
創(chuàng)建用于通信的client和server協(xié)議(工具)
創(chuàng)建和別的程序通信的子進(jìn)程和協(xié)議(工具)
把函數(shù)調(diào)用送入線程池中
下面我們來(lái)舉個(gè)例子:
協(xié)程實(shí)例
import asyncio asyncdef cor1(): print("COR1 start") await cor2() print("COR1 end") asyncdef cor2(): print("COR2") loop = asyncio.get_event_loop() loop.run_until_complete(cor1()) loop.close()
最后三行是重點(diǎn)。
asyncio.get_event_loop() : asyncio啟動(dòng)默認(rèn)的event loop
run_until_complete() : 這個(gè)函數(shù)是阻塞執(zhí)行的,知道所有的異步函數(shù)執(zhí)行完成,
close() : 關(guān)閉event loop。
以上就是本篇文章所講述的所有內(nèi)容,這篇文章主要介紹了python協(xié)程的相關(guān)知識(shí),希望你能借助資料從而理解上述所說(shuō)的內(nèi)容。希望我在這片文章所講述的內(nèi)容能夠?qū)δ阌兴鶐椭屇銓W(xué)習(xí)python更加輕松。
相關(guān)文章
使用Python實(shí)現(xiàn)簡(jiǎn)單的服務(wù)器功能
socket的使用并不局限于Python語(yǔ)言,你可以用C或者Java來(lái)寫出同樣的socket服務(wù)器,而所有語(yǔ)言使用socket的方式都類似(Apache就是使用C實(shí)現(xiàn)的服務(wù)器)2017-08-08Python 類與元類的深度挖掘 II【經(jīng)驗(yàn)】
元類在 Python 中屬于比較深層的黑魔法,在一般的日常應(yīng)用中可能并不常用,但理解其背后的原理對(duì)于理解 Python 面向?qū)ο缶幊桃约耙磺薪詾閷?duì)象的理念很有幫助;如果你需要對(duì)類進(jìn)行深度改造,至少要知道從何入手。2016-05-05Python Django獲取URL中的數(shù)據(jù)詳解
這篇文章主要介紹了Python Django獲取URL中的數(shù)據(jù)詳解,小編覺(jué)得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考2021-11-11Python實(shí)現(xiàn)對(duì)比兩個(gè)Excel數(shù)據(jù)內(nèi)容并標(biāo)記出不同
日常工作中需要對(duì)比兩個(gè)Excel工作表中的數(shù)據(jù)差異是很不方便的,使用python來(lái)做就比較簡(jiǎn)單了!本文為大家介紹了python實(shí)現(xiàn)對(duì)比兩個(gè)Excel的數(shù)據(jù)內(nèi)容并標(biāo)記出不同數(shù)據(jù)的示例代碼,需要的可以參考一下2022-12-12python創(chuàng)建文本文件的簡(jiǎn)單方法
在本篇內(nèi)容里小編給大家整理分享的是一篇關(guān)于python創(chuàng)建文本文件的簡(jiǎn)單方法,有需要的朋友們可以參考學(xué)習(xí)下。2020-08-08Python超詳細(xì)講解內(nèi)存管理機(jī)制
本章主要介紹Pyhon的內(nèi)存管理,以Pyhon的計(jì)數(shù)機(jī)制作為引入,介紹Pyhon的內(nèi)存管理方式,感興趣的朋友來(lái)看看吧2022-06-06詳解Python?AdaBoost算法的實(shí)現(xiàn)
Boosting是機(jī)器學(xué)習(xí)的三大框架之一。Boost也被稱為增強(qiáng)學(xué)習(xí)或提升法,其中典型的代表算法是AdaBoost算法。本文介紹了AdaBoost算法及python實(shí)現(xiàn),感興趣的可以學(xué)習(xí)一下2022-10-10PyQt實(shí)現(xiàn)計(jì)數(shù)器的方法示例
這篇文章主要介紹了PyQt實(shí)現(xiàn)計(jì)數(shù)器的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01keras的backend 設(shè)置 tensorflow,theano操作
這篇文章主要介紹了keras的backend 設(shè)置 tensorflow,theano操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06