詳解Python的多任務(wù)進(jìn)程
更新時間:2022年01月17日 08:41:55 作者:小Pawn爺
這篇文章主要為大家介紹了Python的多任務(wù)進(jìn)程,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
1.基本概念
| 定義 | 含義 |
|---|---|
| 并發(fā): | concurrency,同一時刻只能有一條指令執(zhí)行,但是多個線程的對應(yīng)的指令被快速輪換地執(zhí)行 |
| 并行 | parallel,同一時刻,有多條指令在多個處理器上同時執(zhí)行,并行必須要依賴于多個處理器 |
| 阻塞 | 程序未得到所需計(jì)算資源時被掛起的狀態(tài) |
| 非阻塞 | 程序在等待某操作過程中,自身不被阻塞,可以繼續(xù)處理其他的事情 |
| 同步 | 不同程序單元為了完成某個任務(wù),在執(zhí)行過程中需靠某種通信方式以協(xié)調(diào)一致,我們稱這些程序單元是同步執(zhí)行的 |
| 異步 | 為完成某個任務(wù),不同程序單元之間過程中無需通信協(xié)調(diào),也能完成任務(wù)的方式,不相關(guān)的程序單元之間可以是異步的 |
2.線程和進(jìn)程比較
| 名稱 | 含義 | 應(yīng)用場景 |
|---|---|---|
| 多線程 | 系統(tǒng)進(jìn)行運(yùn)算調(diào)度的最小單位 | IO密集型(磁盤IO,網(wǎng)絡(luò)IO,數(shù)據(jù)庫IO等,譬如爬蟲,網(wǎng)站開發(fā)等) |
| 多進(jìn)程 | 系統(tǒng)進(jìn)行資源分配的最小單位 | CPU密集型(大數(shù)據(jù)分析,機(jī)器學(xué)習(xí)等) |
| 多協(xié)程 | 程序員級別的調(diào)度 | 高并發(fā)的場景 |
3.協(xié)程和線程的比較
多線程:
- 多個線程切換需要頻繁的加鎖解鎖,
- 需要保存或者恢復(fù)cpu上下文,
- 每個線程還需要有緩存cache等數(shù)據(jù)
多協(xié)程:
- 協(xié)程的切換是在單線程里實(shí)現(xiàn)任務(wù)的切換
- 且協(xié)程擁有自己的寄存器上下文和棧,無需線程上下文切換的開銷
- 無需原子操作鎖定及同步的開銷
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python for循環(huán)及基礎(chǔ)用法詳解
這篇文章為大家介紹python for 循環(huán),它常用于遍歷字符串、列表、元組、字典、集合等序列類型,逐個獲取序列中的各個元素2019-11-11
pandas 如何保存數(shù)據(jù)到excel,csv
這篇文章主要介紹了pandas 如何保存數(shù)據(jù)到excel,csv的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
Python實(shí)現(xiàn)GIF動圖以及視頻卡通化詳解
本文主要介紹了如何使用Python中的animegan2-pytorch實(shí)現(xiàn)動圖以及視頻的卡通化效果,文中的代碼具有一定的學(xué)習(xí)價值,需要的朋友可以參考一下2021-12-12
Python實(shí)現(xiàn)的多叉樹尋找最短路徑算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的多叉樹尋找最短路徑算法,結(jié)合實(shí)例形式分析了Python使用深度優(yōu)先查找獲取多叉樹最短路徑相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
詳解Python模塊化--模塊(Modules)和包(Packages)
這篇文章主要介紹了使用Python的模塊(Modules)和包(Packages),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08
pandas實(shí)現(xiàn)數(shù)據(jù)可視化的示例代碼
本文主要介紹了pandas實(shí)現(xiàn)數(shù)據(jù)可視化的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05

