Python 執行緒和程序

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

一、什麼是執行緒

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執行緒和程序

執行緒 計算機能夠進行排程的最小單位 乙個程序可以包含多個執行緒,執行緒共享程序資源 多執行緒併發 上下文程序就像乙個工作的房間 記憶體 以及房間裡工作需要的資源 i o啊,網絡卡啊 執行緒相當於工作的人 所有的在同乙個程序中的執行緒是共享一塊記憶體空間 pid 唯一的程序識別符號 each pro...

python程序和執行緒

爬蟲開發過程中 程序和執行緒的概念是非常重要的 提高爬蟲的 工作效率 打造分布式爬蟲 都離不開程序和執行緒的身影 多程序 多執行緒 協程 分布式程序等四個方面 使用os模組中的fork方法 使用multiprocessing模組 前者僅僅適用unix linux作業系統 對windows不支援 後者...

Python 高階 程序和執行緒

一 編碼規範 1 編排 1 縮排四個空格,空格與tab不能混用 2 行長80,防止單行邏輯複雜 2 import 1 不能用 from import 2 順序 標準庫 第三方庫 自定義庫 3 單行不要import多個庫 4 模組內用不到的不要去import 3 空格 1 標點符號後面跟乙個空格,前面...