Python多執行緒程式設計之多執行緒加鎖

2021-09-07 02:33:47 字數 1291 閱讀 7638

python語言本身是支援多執行緒的,不像php語言。

下面的例子是多個執行緒做同一批任務,任務總是有task_num個,每次執行緒做乙個任務(print),做完後繼續取任務,直到所有任務完成為止。

1

#coding:utf-8

2import

threading

34 start_task =0

5 task_num = 10000

6 mu = threading.lock() #

##通過工廠方法獲取乙個新的鎖物件78

class mythread(threading.thread): #

##類mythread繼承基類threading.thread910

def run(self): #

#執行緒啟動的入口函式,子類需重寫

11global

start_task

12global

mu13

global

start_task

1415

while start_task < task_num: #

#如果任務沒有完成,則繼續

16if mu.acquire(): #

#加鎖17

if start_task 18print

start_task

19 start_task = start_task + 1

20 mu.release() #

#釋放鎖

2122

deftest():

23 thread_all =

24for i in range(6): #

#for迴圈建立6個執行緒

25 t = mythread() #

#建立執行緒

2627 t.start() #

##啟動執行緒

2829

for i in range(6):

30 thread_all[i].join() #

#等待執行緒結束

3132

if__name__ == "

__main__":

33 test()

測試加鎖與不加鎖效果:將任務數設定為1千萬或者以上,在多核機器上將print輸出分別儲存,就能說明問題。

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

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

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

一,什麼是執行緒 執行緒也被稱為輕量程序電腦科學術語,指執行中的程式的排程單位。執行緒是程序中的實體,乙個程序可以擁有多個執行緒,乙個執行緒必須有乙個父程序。執行緒不擁有系統資源,只有執行必須的一些資料結構 它與父程序的其它執行緒共享該程序所擁有的全部資源。執行緒可以建立和撤消執行緒,從而實現程式的...

Linux網路程式設計之多執行緒

多執行緒模型 在多執行緒模型下,注意共享資料的同步,mutex condition variable rw lock等的使用,local thread storage的使用,另外,可以搭配執行緒池處理非同步計算任務。在c 11中的執行緒庫中已經提供了future相關的工具,合理地使用執行緒模型減少資...