Python的執行緒 程序和協程

2022-02-06 07:42:30 字數 860 閱讀 9060

程序:乙個程序就是乙個正在執行的程式,它是計cpu分配資源的最小單位。每個程序都有自己獨立的記憶體空間。能同時執行的程序數最多不超過核心數,也就是每個核心

同一時刻只能執行乙個程序。那麼多程序就是能【同時】執行多個程序(比如同時聽**和寫**),這裡的【同時】可以指cpu通過極快地在程序間來回切換來實現,所

以即使是單核cpu也能執行多程序。

執行緒:執行緒是cpu執行的基本單元。執行緒存在於程序中。乙個程序中至少有乙個執行緒,多個執行緒能夠共享程序的大部分資源,並參與cpu的排程。意味著它能夠在程序間進行

協程:協程也可以稱作微執行緒,是單一執行緒。它通過在內部多個子程式(函式)的中斷和返回繼續執行來實現多工。比如在乙個執行緒中執行任務a的過程中,可以隨時中斷,

去執行b任務,b也可能在執行過程中中斷再去執行a。協程的排程不來自於cpu,而是完全來自於使用者控制(可以理解為用**控制流程)。它的切換不是執行緒切換,而是內

部子程式的切換。只要執行緒越多,協程的效能優勢就越明顯。協程不需要多執行緒的鎖機制,只需要判斷狀態即可。不過協程本身無法利用多核cpu,因為它是單一執行緒。

它們之間的比較:

多程序:占用記憶體多;通訊複雜、資料同步簡單;各程序相互獨立;建立、銷毀及切換複雜,速度慢

多執行緒:占用記憶體少;通訊簡單、資料同步複雜;乙個執行緒掛掉會導致整個程序掛掉;建立、銷毀及切換簡單,速度快

多協程:占用記憶體極少;共享單執行緒的**段、公有資料;切換的開銷最小、速度最快(不用切換到核心態)

python的多程序可由 multiprocessing 庫實現;多執行緒可由 threading 庫實現;協程可由 gevent 、asyncio 或 yield 實現。

程序,執行緒和協程

程序 process 和執行緒 thread 是程式設計師必需掌握的核心知識。而多程序和多執行緒程式設計對於 的並行併發執行,提公升 效率和縮短執行時間至關重要。簡單總結 程序是資源分配的單位 執行緒是作業系統排程的單位 程序切換需要的資源很最大,效率很低 執行緒切換需要的資源一般,效率一般 當然了...

Python之執行緒 程序和協程

一 執行緒概念 執行緒 英語 thread 是作業系統能夠進行運算排程的最小單位。它被包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。二 python中線程的使用 usr bin env python c...

Python 執行緒和程序和協程總結

具體使用參考 python 協程總結 優點 它是一種非常 節儉 的多工操作方式。我們知道,在linux系統下,啟動乙個新的程序必須分配給它獨立的位址空間,建立眾多的資料表來維護它的 段 堆疊段和資料段,這是一種 昂貴 的多工工作方式。而執行於乙個程序中的多個執行緒,它們彼此之間使用相同的位址空間,共...