1. 程式人生 > 程式設計 >python中執行緒和程序有何區別

python中執行緒和程序有何區別

引入程序和執行緒的概念及區別

threading模組提供的類:

Thread,Lock,Rlock,Condition,[Bounded]Semaphore,Event,Timer,local。

1.什麼是程序

計算機程式只不過是磁碟中可執行的二進位制(或其他型別)的資料。它們只有在被讀取到記憶體中,被作業系統呼叫的時候才開始它們的生命期。

程序(有時被稱為重量級程序)是程式的一次執行。每個程序都有自己的地址空間、記憶體、資料棧及其它記錄其執行軌跡的輔助資料。

作業系統管理在其上執行的所有程序,併為這些程序公平的分配時間,程序也可以通過fork和spawn操作來完成其它的任務。

不過各個程序有自己的記憶體空間、資料棧等,所以只能使用程序間通訊,而不能直接共享資訊。

2.執行緒的基本概念

執行緒是程序中執行運算的最小單位,是程序中的一個實體,是被系統獨立排程和分派的基本單位,執行緒自己不擁有系統資源,只擁有一點在執行中必不可少的資源,但它可與同屬一個程序的其它執行緒共享程序所擁有的全部資源。一個執行緒可以建立和撤消另一個執行緒,同一程序中的多個執行緒之間可以併發執行。

3、執行緒和程序的關係以及區別?

程序和執行緒的關係:

(1)一個執行緒只能屬於一個程序,而一個程序可以有多個執行緒,但至少有一個執行緒。

(2)資源分配給程序,同一程序的所有執行緒共享該程序的所有資源。

(3)處理機分給執行緒,即真正在處理機上執行的是執行緒

(4)執行緒在執行過程中,需要協作同步。不同程序的執行緒間要利用訊息通訊的辦法實現同步。執行緒是指程序內的一個執行單元,也是程序內的可排程實體.

程序與執行緒的區別:

(1)排程:執行緒作為排程和分配的基本單位,程序作為擁有資源的基本單位

(2)併發性:不僅程序之間可以併發執行,同一個程序的多個執行緒之間也可併發執行

(3)擁有資源:程序是擁有資源的一個獨立單位,執行緒不擁有系統資源,但可以訪問隸屬於程序的資源.

(4)系統開銷:在建立或撤消程序時,由於系統都要為之分配和回收資源,導致系統的開銷明顯大於建立或撤消執行緒時的開銷。

知識點補充:

  • 程序是資源分配的單位
  • 執行緒是作業系統排程的單位
  • 協程,又稱微執行緒,纖程,協程的切換隻是單純的操作CPU的上下文,資源很小,效率高
  • 程序切換需要的資源很最大,效率很低
  • 一個程式至少有一個程序,一個程序至少有一個執行緒
  • 執行緒執行開銷小,但不利於資源的管理和保護;而程序正相反

到此這篇關於python中執行緒和程序有何區別的文章就介紹到這了,更多相關python中執行緒和程序的區別內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!