Python 多執行緒

2021-09-10 01:10:43 字數 2852 閱讀 1877

1,引入threading模組

import threading
2,通過threading.thread引用子執行緒函式

t2 = threading.thread(target=thread2)
3,啟動子執行緒start()

t2.start()
4,案例演示:

import time

import threading

def thread1(): # 子執行緒2

for i in range(5):

print("你好我是1號執行緒")

time.sleep(1)

def thread2(): # 子執行緒2

for i in range(5):

print("我是二號線程")

time.sleep(1)

def main(): # 主線程

可以看到兩個函式同時執行

通過threading.enumerate()方法檢視正在執行的執行緒

因為執行這個方法時會檢視一次,這時候子執行緒還沒啟動,所以需要迴圈檢視

t1 = threading.thread(target=thread1)

t2 = threading.thread(target=thread2)

t1.start()

t2.start()

while true:

print(threading.enumerate())

if len(threading.enumerate())<=1:

break

python中主線程會預設等到所有的子執行緒結束完後再結束,當主線程死後,所有的子執行緒都會死

適用於**長的,邏輯性比較強的執行緒,上面我們是通過引用函式來實現執行緒,同時我們也可以通過類來實現

1,定義乙個類,繼承於thread,並重寫run方法

import threading

import time

class mythread(threading.thread):

def run(self):

for i in range(5):

print("我是子執行緒")

time.sleep(1)

2,建立該類的例項化物件,並執行start方法,該方法會自動執行run方法的內容

t1 = mythread()

t1.start()

3,案例演示:

import threading

import time

class mythread(threading.thread):

def run(self):

for i in range(5):

print("我是子執行緒")

time.sleep(1)

def main():

t1 = mythread()

t1.start()

for i in range(5):

print("我是主線程")

time.sleep(1)

if __name__ == "__main__":

main()

1,使用asgs引數因為多執行緒也相當於函式,所以多執行緒之間共享全域性變數可以通過global獲取全域性變數

同時也可以通過args引數傳入要共享的元祖引數

t2 = threading.thread(target=thread2,args=(g_number,)) #注意是元祖型別,要有逗號

def thread2(temp) #temp接收傳入的元祖資料

這樣在子執行緒中也可以更改主線程的資料

但是這樣可能會造成資源競爭使結果不準確
2,使用互斥鎖解決資源競爭問題需要通過建立互斥鎖當乙個執行緒在運算元據時,鎖上,其他執行緒不能使用

mutex.acquire()上鎖,如果該資料已上鎖,會堵塞,直到鎖被解開後再上鎖

mutex.release()解鎖

在實際操作中,在資料使用前上鎖,使用後解鎖

def thread1(temp):  # 子執行緒2

for i in range(5):

print("你好我是1號執行緒")

time.sleep(1)

mutex.acquire() #上鎖

mutex.release() #解鎖

python多執行緒 python多執行緒

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

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

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

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

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