python有多執行緒嗎

duanhao發表於2021-09-11

python有多執行緒嗎

多執行緒類似於同時執行多個不同程式,多執行緒執行有如下優點:

使用執行緒可以把佔據長時間的程式中的任務放到後臺去處理。使用者介面可以更加吸引人,這樣比如使用者點選了一個按鈕去觸發某些事件的處理,可以彈出一個進度條來顯示處理的進度程式的執行速度可能加快在一些等待的任務實現上如使用者輸入、檔案讀寫和網路收發資料等,執行緒就比較有用了。在這種情況下我們可以釋放一些珍貴的資源如記憶體佔用等等。

執行緒在執行過程中與程式還是有區別的。每個獨立的程式有一個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。

每個執行緒都有他自己的一組CPU暫存器,稱為執行緒的上下文,該上下文反映了執行緒上次執行該執行緒的CPU暫存器的狀態。

指令指標和堆疊指標暫存器是執行緒上下文中兩個最重要的暫存器,執行緒總是在程式得到上下文中執行的,這些地址都用於標誌擁有執行緒的程式地址空間中的記憶體。


執行緒可以被搶佔(中斷)。在其他執行緒正在執行時,執行緒可以暫時擱置(也稱為睡眠) -- 這就是執行緒的退讓。

Python中使用執行緒有兩種方式:函式或者用類來包裝執行緒物件。

函式式:呼叫thread模組中的start_new_thread()函式來產生新執行緒。語法如下:

thread.start_new_thread ( function, args[, kwargs] )

引數說明:

function - 執行緒函式。

args - 傳遞給執行緒函式的引數,他必須是個tuple型別。

kwargs - 可選引數。

例項

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: unable to start thread"
 
while 1:
   pass

以上程式輸出結果

Thread-1: Thu Jan 22 15:42:17 2009
Thread-1: Thu Jan 22 15:42:19 2009
Thread-2: Thu Jan 22 15:42:19 2009
Thread-1: Thu Jan 22 15:42:21 2009
Thread-2: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:25 2009
Thread-2: Thu Jan 22 15:42:27 2009
Thread-2: Thu Jan 22 15:42:31 2009
Thread-2: Thu Jan 22 15:42:35 2009

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2835752/,如需轉載,請註明出處,否則將追究法律責任。

相關文章