Python 的執行緒模組
Python 2.4 中包含的較新的 threading 模組提供了比上一節討論的 thread 模組更強大、更高階的執行緒支援。
threading 模組公開了 thread 模組的所有方法,並提供了一些其他方法:
- threading.activeCount() - 返回活動執行緒物件的數目。
- threading.currentThread() - 返回呼叫方執行緒控制中的執行緒物件數目。
- threading.enumerate() - 返回當前活動的所有執行緒物件的列表。
除了這些方法外,threading 模組還有 Thread 類來實現執行緒。Thread 類提供的方法如下:
- run() - run() 方法是執行緒的入口點。
- start() - start() 方法透過呼叫 run 方法啟動執行緒。
- join([time]) - join() 等待執行緒終止。
- isAlive() - isAlive() 方法檢查執行緒是否仍在執行。
- getName() - getName() 方法返回執行緒的名稱。
- setName() - setName() 方法設定執行緒的名稱。
使用 Threading 模組建立執行緒
要使用 threading 模組實現新執行緒,您需要執行以下操作:
- 定義 Thread 類的新的子類。
- 重寫 __init__(self [,args]) 方法以新增其他引數。
- 然後,重寫 run(self [,args]) 方法以實現執行緒啟動後應執行的操作。
建立新的 Thread 子類後,您可以建立它的例項,然後透過呼叫 start() 啟動新執行緒,該方法依次呼叫 run() 方法。
示例
#!/usr/bin/python import threading import time exitFlag = 0 class myThread (threading.Thread): def __init__(self, threadID, name, counter): threading.Thread.__init__(self) self.threadID = threadID self.name = name self.counter = counter def run(self): print "Starting " + self.name print_time(self.name, 5, self.counter) print "Exiting " + self.name def print_time(threadName, counter, delay): while counter: if exitFlag: threadName.exit() time.sleep(delay) print "%s: %s" % (threadName, time.ctime(time.time())) counter -= 1 # Create new threads thread1 = myThread(1, "Thread-1", 1) thread2 = myThread(2, "Thread-2", 2) # Start new Threads thread1.start() thread2.start() print "Exiting Main Thread"
執行上述程式碼時,會產生以下結果:
Starting Thread-1 Starting Thread-2 Exiting Main Thread Thread-1: Thu Mar 21 09:10:03 2013 Thread-1: Thu Mar 21 09:10:04 2013 Thread-2: Thu Mar 21 09:10:04 2013 Thread-1: Thu Mar 21 09:10:05 2013 Thread-1: Thu Mar 21 09:10:06 2013 Thread-2: Thu Mar 21 09:10:06 2013 Thread-1: Thu Mar 21 09:10:07 2013 Exiting Thread-1 Thread-2: Thu Mar 21 09:10:08 2013 Thread-2: Thu Mar 21 09:10:10 2013 Thread-2: Thu Mar 21 09:10:12 2013 Exiting Thread-2
廣告