โมดูล threading ใหม่กว่าที่มาพร้อม Python 2.4 ให้การสนับสนุนเธรดระดับสูง (high-level) ที่ทรงพลังกว่าโมดูล thread มาก
โมดูล threading เปิดเผยเมธอดทั้งหมดของโมดูล thread และเพิ่มเมธอดพิเศษ:
- threading.activeCount() - คืนจำนวน thread objects ที่ active
- threading.currentThread() - คืน thread object ของ caller's thread control
- threading.enumerate() - คืนรายการ thread objects ที่ active ทั้งหมด
นอกจากนี้ threading module มีคลาส Thread ที่นำ threading ไปใช้งาน เมธอดของคลาส Thread:
- run() - จุดเข้าสู่ thread
- start() - เริ่ม thread โดยเรียก run method
- join([time]) - รอให้ thread จบการทำงาน
- isAlive() - ตรวจสอบว่า thread ยังทำงานอยู่หรือไม่
- getName() - คืนชื่อของ thread
- setName() - ตั้งชื่อของ thread
การสร้าง Thread ด้วย Threading Module
- กำหนด subclass ใหม่ของคลาส Thread
- Override เมธอด
__init__(self [,args])เพื่อเพิ่มอาร์กิวเมนต์ - Override เมธอด
run(self [,args])เพื่อกำหนดงานที่ thread ควรทำเมื่อเริ่ม
หลังจากสร้าง Thread subclass ใหม่แล้ว สร้างอินสแตนซ์และเริ่ม 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