python 多執行緒

2022-07-10 04:36:09 字數 1503 閱讀 8398

在了解執行緒前,我們需要首先了解一下程序,並了解其與執行緒之間的關係。

1)程序可以看做乙個獨立的應用,而執行緒卻不可以;

2)程序有自己獨立的記憶體位址空間(即不共享記憶體,並互不影響),

執行緒只是程序的不同執行路徑,執行緒沒有獨立的記憶體位址空間;

3)乙個程序最少包含乙個執行緒,同乙個程序下的多個執行緒共享程序的位址空間,

乙個執行緒可以建立和撤銷另乙個執行緒,同乙個程序中的多個執行緒之間可以併發執行;

4)每個程序都有乙個程式執行的入口,順序執行序列和程式的出口,

但是執行緒不能獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制;

5)程序是資源分配的最小單位,執行緒是cpu排程的最小單位

執行緒就是來工作的,程序是擁有資源者

6)程序之間的切換比執行緒之間的切換開銷大,使用多執行緒實現多工併發執行比使用多程序效率高     

7)每個執行緒都有他自己的一組cpu暫存器,稱為執行緒的上下文,該上下文反映了執行緒上次執行該執行緒的cpu暫存器的狀態。

指令指標和堆疊指標暫存器是執行緒上下文中兩個最重要的暫存器,執行緒總是在程序得到上下文中執行的,這些位址都用於標誌擁有執行緒的程序位址空間中的記憶體。

執行緒可以被搶占(中斷)。

在其他執行緒正在執行時,執行緒可以暫時擱置(也稱為睡眠) -- 這就是執行緒的退讓。

1)使用多執行緒可以把佔據時間長的任務放到後台去處理(比如io操作,網路資料的收發等),這時我們可以釋放一些資源,如記憶體占用等

2)使用多執行緒,程式的執行速度會可能會加快

1

import

threading

2import

time34

class

mythread(threading.thread):56

7def

__init__

(self, num):

8 super(mythread, self).__init__

()9 self.num =num

1011

defrun(self):

12print("

thread_name: %s, num: %d

" %(threading.current_thread().getname(), self.num))

13 time.sleep(2)

14print("

num:

", self.num)

15 time.sleep(1)

16print("

end,

", self.num)

1718

19if

__name__ == '

__main__':

20 thread1 = mythread(1)

21 thread2 = mythread(2)

22thread1.start()

23 thread2.start()

python多執行緒 python多執行緒

通常來說,多程序適用於計算密集型任務,多執行緒適用於io密集型任務,如網路爬蟲。關於多執行緒和多程序的區別,請參考這個 下面將使用python標準庫的multiprocessing包來嘗試多執行緒的操作,在python中呼叫多執行緒要使用multiprocessing.dummy,如果是多程序則去掉...

python多執行緒詳解 Python多執行緒詳解

前言 由於最近的工作中一直需要用到python去處理資料,而在面對大量的資料時,python多執行緒的優勢就展現出來了。因而藉此機會,盡可能詳盡地來闡述python多執行緒。但對於其更底層的實現機制,在此不做深究,僅是對於之前的一知半解做個補充,也希望初學者能夠通過這篇文章,即便是照葫蘆畫瓢,也能夠...

python程式多執行緒 PYTHON多執行緒

在單執行緒的情況下,程式是逐條指令順序執行的。同一時間只做乙個任務,完成了乙個任務再進行下乙個任務。比如有5個人吃飯,單執行緒一次只允許乙個人吃,乙個人吃完了另乙個人才能接著吃,假如每個人吃飯都需要1分鐘,5個人就需要5分鐘。多執行緒的情況下,程式就會同時進行多個任務,雖然在同一時刻也只能執行某個任...