python3多執行緒知識點總結
多執行緒類似於同時執行多個不同程式,多執行緒執行有如下優點:
使用執行緒可以把佔據長時間的程式中的任務放到後臺去處理。
使用者介面可以更加吸引人,比如使用者點選了一個按鈕去觸發某些事件的處理,可以彈出一個進度條來顯示處理的進度。
程式的執行速度可能加快。
在一些等待的任務實現上如使用者輸入、檔案讀寫和網路收發資料等,執行緒就比較有用了。在這種情況下我們可以釋放一些珍貴的資源如記憶體佔用等等。
每個獨立的執行緒有一個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。
每個執行緒都有他自己的一組CPU暫存器,稱為執行緒的上下文,該上下文反映了執行緒上次執行該執行緒的CPU暫存器的狀態。
指令指標和堆疊指標暫存器是執行緒上下文中兩個最重要的暫存器,執行緒總是在程序得到上下文中執行的,這些地址都用於標誌擁有執行緒的程序地址空間中的記憶體。
執行緒可以被搶佔(中斷)。
在其他執行緒正在執行時,執行緒可以暫時擱置(也稱為睡眠) -- 這就是執行緒的退讓。
執行緒可以分為:
- 核心執行緒:由作業系統核心建立和撤銷。
- 使用者執行緒:不需要核心支援而在使用者程式中實現的執行緒。
Python3 執行緒中常用的兩個模組為:
_thread
threading(推薦使用)
thread 模組已被廢棄。使用者可以使用 threading 模組代替。所以,在 Python3 中不能再使用"thread" 模組。為了相容性,Python3 將 thread 重新命名為 "_thread"。
開始學習Python執行緒
Python中使用執行緒有兩種方式:函式或者用類來包裝執行緒物件。
函式式:呼叫 _thread 模組中的start_new_thread()函式來產生新執行緒。語法如下:
_thread.start_new_thread ( function,args[,kwargs] )
引數說明:
function - 執行緒函式。
args - 傳遞給執行緒函式的引數,他必須是個tuple型別。
kwargs - 可選引數。
例項:
#!/usr/bin/python3 import _thread import time # 為執行緒定義一個函式 def print_time( threadName,delay): count = 0 while count < 5: time.sleep(delay) count += 1 print ("%s: %s" % ( threadName,time.ctime(time.time()) )) # 建立兩個執行緒 try: _thread.start_new_thread( print_time,("Thread-1",2,) ) _thread.start_new_thread( print_time,("Thread-2",4,) ) except: print ("Error: 無法啟動執行緒") while 1: pass
以上就是python3多執行緒的詳細內容,感謝大家對我們的支援。