詳解Python的多任務進程

1.基本概念

定義 含義
並發: concurrency,同一時刻隻能有一條指令執行,但是多個線程的對應的指令被快速輪換地執行
並行 parallel,同一時刻,有多條指令在多個處理器上同時執行,並行必須要依賴於多個處理器
阻塞 程序未得到所需計算資源時被掛起的狀態
非阻塞 程序在等待某操作過程中,自身不被阻塞,可以繼續處理其他的事情
同步 不同程序單元為瞭完成某個任務,在執行過程中需靠某種通信方式以協調一致,我們稱這些程序單元是同步執行的
異步 為完成某個任務,不同程序單元之間過程中無需通信協調,也能完成任務的方式,不相關的程序單元之間可以是異步的

2.線程和進程比較

名稱 含義 應用場景
多線程 系統進行運算調度的最小單位 IO密集型(磁盤IO網絡IO數據庫IO等,譬如爬蟲,網站開發等)
多進程 系統進行資源分配的最小單位 CPU密集型(大數據分析,機器學習等)
多協程 程序員級別的調度 高並發的場景

3.協程和線程的比較

多線程:

  • 多個線程切換需要頻繁的加鎖解鎖,
  • 需要保存或者恢復cpu上下文,
  • 每個線程還需要有緩存cache等數據

多協程:

  • 協程的切換是在單線程裡實現任務的切換
  • 且協程擁有自己的寄存器上下文和棧,無需線程上下文切換的開銷
  • 無需原子操作鎖定及同步的開銷

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: