python併發程式設計之多執行緒一

2022-04-03 00:09:10 字數 1268 閱讀 1694

一,什麼是執行緒

執行緒也被稱為輕量程序電腦科學術語,指執行中的程式的排程單位。 

執行緒是程序中的實體,乙個程序可以擁有多個執行緒,乙個執行緒必須有乙個父程序。執行緒不擁有系統資源,只有執行必須的一些資料結構;

它與父程序的其它執行緒共享該程序所擁有的全部資源。執行緒可以建立和撤消執行緒,從而實現程式的併發執行。一般,執行緒具有就緒、阻塞和執行三種基本狀態。

二,執行緒與程序的區別

1) 簡而言之,乙個程式至少有乙個程序,乙個程序至少有乙個執行緒.

2) 執行緒的劃分尺度小於程序,使得多執行緒程式的併發性高。

3) 另外,程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。

4) 執行緒在執行過程中與程序還是有區別的。每個獨立的執行緒有乙個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。

5) 從邏輯角度來看,多執行緒的意義在於乙個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現程序的排程和管理以及資源分配。這就是程序和執行緒的重要區別。

4.優缺點

執行緒和程序在使用上各有優缺點:執行緒執行開銷小,但不利於資源的管理和保護;而程序正相反。

三,為何要用多執行緒

多執行緒指的是,在乙個程序中開啟多個執行緒,簡單的講:如果多個任務共用一塊位址空間,那麼必須在乙個程序內開啟多個執行緒。詳細的講分為4點:

1. 多執行緒共享乙個程序的位址空間

2. 執行緒比程序更輕量級,執行緒比程序更容易建立可撤銷,在許多作業系統中,建立乙個執行緒比建立乙個程序要快10-100倍,在有大量執行緒需要動態和快速修改時,這一特性很有用

3. 若多個執行緒都是cpu密集型的,那麼並不能獲得效能上的增強,但是如果存在大量的計算和大量的i/o處理,擁有多個執行緒允許這些活動彼此重疊執行,從而會加快程式執行的速度。

4. 在多cpu系統中,為了最大限度的利用多核,可以開啟多個執行緒,比開程序開銷要小的多。(這一條並不適用於python)

四,什麼時候要用多執行緒

1、cpu密集型**(各種迴圈處理、計數等等),在這種情況下,由於計算工作多,然後觸發gil的釋放與再競爭(多個執行緒來回切換當然是需要消耗資源的),所以python下的多執行緒對cpu密集型**並不友好,所以這個時候推薦使用多程序。

python併發程式設計之多執行緒

程序包含了執行該程式所需要所有資源 程序是乙個資源單位 執行緒是cpu的最小執行單位 每乙個程序一旦被建立 就預設開啟了一條執行緒 稱之為主線程 使用執行緒可以提高程式效率 為何不用多程序提高效率 是因為程序對作業系統的資源耗費非常高 執行緒共享建立它的程序的位址空間 程序有自己的位址空間。執行緒可...

併發程式設計之多執行緒篇之一

本節主要知識點包括三個方面 一 執行緒的含義 二 程序和執行緒的區別 三 開啟程序的兩種方式 1 什麼是執行緒和多執行緒?1 在傳統作業系統中,每個程序有乙個位址空間,而且預設就有乙個控制線程。執行緒顧名思義,就是一條流水線工作的過程 流水線的工作需要電源,電源就相當於cpu 而一條流水線必須屬於乙...

1 3併發程式設計之多執行緒通訊

多執行緒之間通訊,其實就是多個執行緒在操作同乙個資源,但是操作的動作不同。1.因為涉及到物件鎖,他們必須都放在synchronized中來使用.wait notify一定要在synchronized裡面進行使用。2.wait必須暫定當前正在執行的執行緒,並釋放資源鎖,讓其他執行緒可以有機會執行 3....