詳解Python的多任務進程
1.基本概念
定義 | 含義 |
---|---|
並發: | concurrency,同一時刻隻能有一條指令執行,但是多個線程的對應的指令被快速輪換地執行 |
並行 | parallel,同一時刻,有多條指令在多個處理器上同時執行,並行必須要依賴於多個處理器 |
阻塞 | 程序未得到所需計算資源時被掛起的狀態 |
非阻塞 | 程序在等待某操作過程中,自身不被阻塞,可以繼續處理其他的事情 |
同步 | 不同程序單元為瞭完成某個任務,在執行過程中需靠某種通信方式以協調一致,我們稱這些程序單元是同步執行的 |
異步 | 為完成某個任務,不同程序單元之間過程中無需通信協調,也能完成任務的方式,不相關的程序單元之間可以是異步的 |
2.線程和進程比較
名稱 | 含義 | 應用場景 |
---|---|---|
多線程 | 系統進行運算調度的最小單位 | IO密集型(磁盤IO ,網絡IO ,數據庫IO 等,譬如爬蟲,網站開發等) |
多進程 | 系統進行資源分配的最小單位 | CPU密集型(大數據分析,機器學習等) |
多協程 | 程序員級別的調度 | 高並發的場景 |
3.協程和線程的比較
多線程:
- 多個線程切換需要頻繁的加鎖解鎖,
- 需要保存或者恢復cpu上下文,
- 每個線程還需要有緩存cache等數據
多協程:
- 協程的切換是在單線程裡實現任務的切換
- 且協程擁有自己的寄存器上下文和棧,無需線程上下文切換的開銷
- 無需原子操作鎖定及同步的開銷
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!