Chạy một số luồng tương tự như chạy một số chương trình khác nhau đồng thời, nhưng với các lợi ích sau - Show
Một chủ đề có một bắt đầu, một chuỗi thực thi và một kết luận. Nó có một con trỏ hướng dẫn theo dõi vị trí trong bối cảnh của nó hiện đang chạy.
Bắt đầu một chủ đề mớiĐể sinh ra một luồng khác, bạn cần gọi phương thức sau có sẵn trong mô -đun luồng - thread.start_new_thread ( function, args[, kwargs] ) Cuộc gọi phương thức này cho phép một cách nhanh chóng và hiệu quả để tạo các luồng mới trong cả Linux và Windows. Cuộc gọi phương thức trả về ngay lập tức và luồng con bắt đầu và gọi chức năng với danh sách ARG được truyền. Khi chức năng trả về, luồng chấm dứt. Ở đây, Args là một bộ lý luận; Sử dụng hàm trống để gọi mà không cần truyền bất kỳ đối số nào. KWARGS là một từ điển tùy chọn của các đối số từ khóa. Thí dụ#!/usr/bin/python import thread import time # Define a function for the thread def print_time( threadName, delay): count = 0 while count < 5: time.sleep(delay) count += 1 print "%s: %s" % ( threadName, time.ctime(time.time()) ) # Create two threads as follows 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 Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau - 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 Mặc dù nó rất hiệu quả đối với luồng cấp thấp, nhưng mô-đun luồng rất hạn chế so với mô-đun luồng mới hơn. Mô -đun luồngMô-đun luồng mới hơn được bao gồm với Python 2.4 cung cấp hỗ trợ cấp cao, mạnh mẽ hơn nhiều cho các luồng so với mô-đun luồng được thảo luận trong phần trước. Mô -đun luồng hiển thị tất cả các phương thức của mô -đun luồng và cung cấp một số phương thức bổ sung -
Ngoài các phương thức, mô -đun luồng có lớp luồng thực hiện luồng. Các phương thức được cung cấp bởi lớp luồng như sau -
Tạo luồng bằng mô -đun luồngĐể thực hiện một luồng mới bằng mô -đun luồng, bạn phải thực hiện các bài viết sau -
Khi bạn đã tạo lớp con luồng mới, bạn có thể tạo một thể hiện của nó và sau đó bắt đầu một luồng mới bằng cách gọi start (), lần lượt gọi phương thức Run (). Thí dụ#!/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" Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau - 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 Mặc dù nó rất hiệu quả đối với luồng cấp thấp, nhưng mô-đun luồng rất hạn chế so với mô-đun luồng mới hơn.Mô -đun luồng Mô-đun luồng mới hơn được bao gồm với Python 2.4 cung cấp hỗ trợ cấp cao, mạnh mẽ hơn nhiều cho các luồng so với mô-đun luồng được thảo luận trong phần trước. Mô -đun luồng hiển thị tất cả các phương thức của mô -đun luồng và cung cấp một số phương thức bổ sung - Chủ đề.ActiveCount () - Trả về số lượng đối tượng luồng đang hoạt động. Thí dụ#!/usr/bin/python import threading import time 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 # Get lock to synchronize threads threadLock.acquire() print_time(self.name, self.counter, 3) # Free lock to release next thread threadLock.release() def print_time(threadName, delay, counter): while counter: time.sleep(delay) print "%s: %s" % (threadName, time.ctime(time.time())) counter -= 1 threadLock = threading.Lock() threads = [] # Create new threads thread1 = myThread(1, "Thread-1", 1) thread2 = myThread(2, "Thread-2", 2) # Start new Threads thread1.start() thread2.start() # Add threads to thread list threads.append(thread1) threads.append(thread2) # Wait for all threads to complete for t in threads: t.join() print "Exiting Main Thread" Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau - Starting Thread-1 Starting Thread-2 Thread-1: Thu Mar 21 09:11:28 2013 Thread-1: Thu Mar 21 09:11:29 2013 Thread-1: Thu Mar 21 09:11:30 2013 Thread-2: Thu Mar 21 09:11:32 2013 Thread-2: Thu Mar 21 09:11:34 2013 Thread-2: Thu Mar 21 09:11:36 2013 Exiting Main Thread Mặc dù nó rất hiệu quả đối với luồng cấp thấp, nhưng mô-đun luồng rất hạn chế so với mô-đun luồng mới hơn.Mô -đun luồng
Thí dụ#!/usr/bin/python import Queue import threading import time exitFlag = 0 class myThread (threading.Thread): def __init__(self, threadID, name, q): threading.Thread.__init__(self) self.threadID = threadID self.name = name self.q = q def run(self): print "Starting " + self.name process_data(self.name, self.q) print "Exiting " + self.name def process_data(threadName, q): while not exitFlag: queueLock.acquire() if not workQueue.empty(): data = q.get() queueLock.release() print "%s processing %s" % (threadName, data) else: queueLock.release() time.sleep(1) threadList = ["Thread-1", "Thread-2", "Thread-3"] nameList = ["One", "Two", "Three", "Four", "Five"] queueLock = threading.Lock() workQueue = Queue.Queue(10) threads = [] threadID = 1 # Create new threads for tName in threadList: thread = myThread(threadID, tName, workQueue) thread.start() threads.append(thread) threadID += 1 # Fill the queue queueLock.acquire() for word in nameList: workQueue.put(word) queueLock.release() # Wait for queue to empty while not workQueue.empty(): pass # Notify threads it's time to exit exitFlag = 1 # Wait for all threads to complete for t in threads: t.join() print "Exiting Main Thread" Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau - Starting Thread-1 Starting Thread-2 Starting Thread-3 Thread-1 processing One Thread-2 processing Two Thread-3 processing Three Thread-1 processing Four Thread-2 processing Five Exiting Thread-3 Exiting Thread-1 Exiting Thread-2 Exiting Main Thread Làm cách nào để kích hoạt nhiều luồng trong Python?Để sử dụng đa luồng, chúng ta cần nhập mô -đun luồng trong chương trình Python. Một phương thức start () được sử dụng để bắt đầu hoạt động của một luồng. Và nó chỉ gọi một lần cho mỗi luồng để việc thực thi luồng có thể bắt đầu.import the threading module in Python Program. A start() method is used to initiate the activity of a thread. And it calls only once for each thread so that the execution of the thread can begin.
Làm cách nào để kích hoạt các chủ đề trong Python?Bạn cần gán đối tượng luồng cho một biến và sau đó khởi động nó bằng cách sử dụng điều đó: Thread1 = Threading.Thread (Target = F) theo sau là Thread1.start ().Sau đó, bạn có thể làm Thread1.thread1=threading. Thread(target=f) followed by thread1. start() . Then you can do thread1.
Tại sao không có đa luồng trong Python?Python không hỗ trợ đa luồng vì Python trên trình thông dịch Cpython không hỗ trợ thực thi đa lõi thực sự thông qua đa luồng.Tuy nhiên, Python có một thư viện luồng.Python on the Cpython interpreter does not support true multi-core execution via multithreading. However, Python does have a threading library.
Làm thế nào để bạn sử dụng chức năng đa luồng trong Python?Theo mặc định, đa luồng theo mặc định, các chương trình Python của bạn có một luồng duy nhất, được gọi là luồng chính.Bạn có thể tạo các luồng bằng cách chuyển một hàm cho hàm tạo luồng () hoặc bằng cách kế thừa lớp luồng và ghi đè phương thức Run ().create threads by passing a function to the Thread() constructor or by inheriting the Thread class and overriding the run() method. |