Trong Python, việc khởi động một luồng liên quan đến việc sử dụng phương thức start() được cung cấp bởi lớp Thread trong mô-đun threading . Phương thức này khởi động hoạt động của luồng và tự động gọi phương thức run() của nó trong một luồng thực thi riêng biệt. Điều này có nghĩa là, khi bạn gọi start() trên mỗi đối tượng luồng (ví dụ, thread1, thread2, thread3) để khởi động việc thực thi của chúng.
Python để khởi động các luồng riêng biệt mà đồng thời thực thi phương thức run() được định nghĩa trong mỗi thể hiện Thread. Và luồng chính tiếp tục thực thi sau khi khởi động các luồng con.
Trong hướng dẫn này, bạn sẽ thấy một giải thích chi tiết và ví dụ về cách sử dụng phương thức start() một cách hiệu quả trong lập trình đa luồng để hiểu hành vi của nó trong các ứng dụng đa luồng.
Phương thức start() là cơ bản để bắt đầu thực thi một luồng. Nó thiết lập môi trường cho luồng và lên lịch cho nó chạy. Quan trọng là, phương thức này chỉ nên được gọi một lần cho mỗi đối tượng Thread. Nếu phương thức này được gọi nhiều hơn một lần trên cùng một đối tượng Thread, nó sẽ gây ra lỗi RuntimeError.
Dưới đây là cú pháp để sử dụng phương thức start() trên một đối tượng Thread −
threading.thread.start()
Hãy xem ví dụ dưới đây, minh họa cách bắt đầu một luồng mới trong Python bằng cách sử dụng phương thức start() .
from threading import Thread from time import sleep def my_function(arg): for i in range(arg): print("child Thread running", i) sleep(0.5) thread = Thread(target = my_function, args = (10, )) thread.start() print("thread finished...exiting")
Khi đoạn mã trên được thực thi, nó sẽ tạo ra kết quả sau −
child Thread running 0 thread finished...exiting child Thread running 1 child Thread running 2 child Thread running 3 child Thread running 4 child Thread running 5 child Thread running 6 child Thread running 7 child Thread running 8 child Thread running 9
Dưới đây là một ví dụ khác minh họa cách hoạt động của phương thức start() . Bạn có thể thấy rằng, bằng cách không gọi phương thức start() trên thread2, nó vẫn không hoạt động và không bắt đầu thực thi.
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) print_time(self.name, self.counter) print("Exiting " + self.name) def print_time(threadName, counter): while counter: time.sleep(1) 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) thread3 = MyThread(3, "Thread-3", 3) # Start new Threads thread1.start() thread3.start() print("Exiting Main Thread")
Mã trên sẽ tạo ra đầu ra sau đây −
Starting Thread-1 Starting Thread-3 Exiting Main Thread Thread-1: Mon Jun 24 18:24:59 2024 Exiting Thread-1 Thread-3: Mon Jun 24 18:24:59 2024 Thread-3: Mon Jun 24 18:25:00 2024 Thread-3: Mon Jun 24 18:25:01 2024 Exiting Thread-3