Python 執行緒和程序

2022-06-23 18:39:09 字數 1070 閱讀 7483

一、什麼是執行緒

1、執行緒是作業系統能夠進行運算排程的最小單位。它被包含在程序中,是程序中的實際運作單位。一條執行緒指的是程序中一個單一順序的控制流,一個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。每個程序至少包含一個執行緒.

二、什麼是程序

1、一個程序就是一個程式的例項,每個程序裡面都包含了執行這個程式的資源。

2、虛擬記憶體地址,執行的**,開啟的控制代碼,連線作業系統的介面,使用者id,獨立的程序號,環境變數,優先順序,最大最小的空間大小,和至少一個執行緒,每一個程序預設啟動時候是有一個主執行緒的,主執行緒又可以建立新的執行緒。

三、程序與執行緒的區別

1、執行緒共享記憶體資料。

2、執行緒可以訪問程序中所有的資料。

3、可以直接和其它執行緒進行通訊,但是兩個程序之間通訊必須通過第三方。

4、程序有自己獨立的記憶體空間

5、一個程序可以產生一個子程序但是和子程序之間也無法直接進行資料訪問。

6、父程序要產生子程序需要將自己克隆一份。

7、同一個程序中的其它執行緒是可以互相互動的,而一個程序對其子程序只能由控制作用。

8、對主執行緒的修改有可能會影響其它的執行緒

四、python gil

1、無論你啟多少個執行緒,你有多少個cpu,python在執行的時候會淡定的在同時只允許一個執行緒執行(因為加了gil鎖)。

2、首先需要明確一點是gil並不是python的特性,它是在實現python直譯器(cpython)時所引入的一個概念,就好比c++是一套語言標準,但是可以用不同的編譯器來編譯成可執行**。有名的直譯器例如gcc,intel c++,visual c++等,python也一樣,同樣一段**可以通過cpython,pypy,psyco等不同的python執行環境來執行。像其中的jpython就沒有gil。然而因為cpython是大部分環境下預設的python執行環境。所以在很多人的概念裡cpython就是python,也就想當然的把gil歸結為python語言的缺陷。所以這裡有一個概念:gil並不是python的特性,python完全可以不依賴於gil.

python的 和

1 兩個乘號就是乘方,比如2 4 結果就是2的4次方,結果是16 一個乘號 ,如果運算元是兩個數字,就是這兩個數字相乘,如2 4 結果為8 如果是字串 列表 元組與一個整數n相乘,返回一個其所有元素重複n次的同型別物件,比如 str 3將返回字串 strstrstr 2 如果是函式定義中引數前的...

Python eq 和 str

在我們定義一個類的時候,常常想對一個類所例項化出來的兩個物件進行判斷這兩個物件是否是完全相同的。一般情況下,我們認為如果同一個類例項化出來的...

python globals和locals

文章裡面說globals和locals函式返回的是名稱空間 一個存有對應作用域的所有的變數 方法的字典,注意這裡和dir函式返回陣列的不一樣...