本文介紹的是Python多執行緒,想了解Python多執行緒,得先了解什麼是執行緒。
執行緒是作業系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以並發多個線程,每個線程並行執行不同的任務。
而多執行緒類似於同時執行多個不同程序,多執行緒運行有以下優點:
1.使用執行緒可以把佔據長時間的程式中的任務放到後台去處理。
2.使用者介面可以更吸引人,這樣例如使用者點擊了一個按鈕去觸發某些事件的處理,可以彈出一個進度條來顯示處理的進度
程式的運行速度可能加快
3.在一些等待的任務實現上如用戶輸入、文件讀寫和網絡收發數據等,線程就比較有用了。在這種情況下我們可以釋放一些珍貴的資源如記憶體佔用等等。
4.執行緒在執行過程中與行程還是有區別的。每個獨立的執行緒都有一個程式運行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。
每個執行緒都有他自己的一組CPU暫存器,稱為執行緒的上下文,該上下文反映了執行緒上次運行該執行緒的CPU暫存器的狀態。
指令指標和堆疊指標暫存器是執行緒上下文中兩個最重要的暫存器,執行緒總是在進程得到上下文中運行的,這些位址都用於標誌擁有執行緒的進程位址空間中的記憶體。
5.執行緒可以被搶佔(中斷)。
6.在其他執行緒正在執行時,執行緒可以暫時擱置(也稱為睡眠) -- 這就是執行緒的退讓。
開始學習Python多執行緒
Python中使用執行緒有兩種方式:函數或用類別來包裝執行緒物件。
函數式:呼叫thread模組中的start_new_thread()函數來產生新執行緒。語法如下:
thread.start_new_thread ( function, args[, kwargs] )
參數說明:
1.function - 執行緒函數。
2.args - 傳遞給執行緒函數的參數,他必須是個tuple類型。
3.kwargs - 可選參數。
附上實例
#!/usr/bin/python # -*- coding: UTF-8 -*- 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
執行緒的結束一般依賴執行緒函數的自然結束;也可以在執行緒函數中呼叫thread.exit(),他拋出SystemExit exception,達到退出執行緒的目的
以上是如何進行Python多線程編程,一文讀懂Python多線程的詳細內容。更多資訊請關注PHP中文網其他相關文章!