Python 多執行緒 threading

2021-08-21 04:29:11 字數 1466 閱讀 1999

import threading

defthread_job

(): print('this is a thread of %s' % threading.current_thread())

defmain

(): thread = threading.thread(target=thread_job,) # 定義執行緒

thread.start() # 讓執行緒開始工作

thread.join()

當前活躍執行緒數

threading.active_count()

檢視所有執行緒資訊

threading.enumerate()

檢視當前執行的執行緒

threading.current_thread()

thread.join() 表示 當前主線程要等待所有帶 join的子執行緒結束以後才能接著執行。

import threading

import time

from queue import queue

defjob

(l,q):

for i in range (len(l)):

l[i] = l[i]**2

q.put(l)

defmultithreading

(): q =queue()

threads =

data = [[1,2,3],[3,4,5],[4,4,4],[5,5,5]]

for i in range(4):

t = threading.thread(target=job,args=(data[i],q))

t.start()

for thread in threads:

thread.join()

results =

for _ in range(4):

print(results)

if __name___=='__main__':

multithreading()

儘管python完全支援多執行緒程式設計, 但是直譯器的c語言實現部分在完全並行執行時並不是執行緒安全的。 實際上,直譯器被乙個全域性直譯器鎖保護著,它確保任何時候都只有乙個python執行緒執行。 gil最大的問題就是python的多執行緒程式並不能利用多核cpu的優勢 (比如乙個使用了多個執行緒的計算密集型程式只會在乙個單cpu上面執行)。

給全域性變數加鎖

global a,lock

lock 原理和其它鎖都一樣

在每個執行緒執行運算修改共享記憶體之前,執行lock.acquire()將共享記憶體上鎖, 確保當前執行緒執行時,記憶體不會被其他執行緒訪問,執行運算完畢後,使用lock.release()將鎖開啟, 保證其他的執行緒可以使用該共享記憶體。

以上內容** 莫煩python

莫煩python

python 多執行緒thread

python通過thread模組支援多執行緒,語法也很簡潔,現在通過乙個例項來看一下python中的多執行緒 import thread import time 保證只額外啟動乙個執行緒 isrunning false 啟動的時間控制,測試時間是23點44分,所以定的是這個時間,可以用於指定定時任務...

Python多執行緒Thread

import threading import time import random def worker name print name 開始執行.n 0 while true print name 輸出 str n n n 1 t random.randint 0,5 print name 休眠...

python多執行緒使用thread

import sched import threading import time defnew task function,delay time,args 定時任務函式 param function 需要執行的函式 param delay time 延遲多少時間執行 param args 需要給f...