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...