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

更新於: 2020-01-31

9K+ 閱讀量

開啟你的 職業生涯

完成課程獲得認證

立即開始
廣告