Trong Python, việc đặt tên cho một luồng liên quan đến việc gán một chuỗi làm định danh cho đối tượng luồng. Tên luồng trong Python chủ yếu được sử dụng cho mục đích nhận diện và không ảnh hưởng đến hành vi hoặc ý nghĩa của luồng. Nhiều luồng có thể chia sẻ cùng một tên, và tên có thể được chỉ định trong quá trình khởi tạo luồng hoặc thay đổi một cách động.
Đặt tên cho luồng trong Python cung cấp một cách đơn giản để xác định và quản lý các luồng trong một chương trình đồng thời. Bằng cách gán những tên có ý nghĩa, người dùng có thể nâng cao độ rõ ràng của mã và dễ dàng gỡ lỗi cho các ứng dụng đa luồng phức tạp.
Khi bạn tạo một luồng bằng cách sử dụng lớp threading.Thread() , bạn có thể chỉ định tên của nó bằng cách sử dụng tham số name . Nếu không được cung cấp, Python sẽ gán một tên mặc định theo mẫu sau "Thread-N", trong đó N là một số thập phân nhỏ. Ngoài ra, nếu bạn chỉ định một hàm mục tiêu, định dạng tên mặc định sẽ trở thành "Thread-N (target_function_name)".
Dưới đây là một ví dụ minh họa việc gán tên tùy chỉnh và tên mặc định cho các luồng được tạo ra bằng lớp threading.Thread() , và hiển thị cách tên có thể phản ánh các hàm mục tiêu.
from threading import Thread import threading from time import sleep def my_function_1(arg): print("This tread name is", threading.current_thread().name) # Create thread objects thread1 = Thread(target=my_function_1, name='My_thread', args=(2,)) thread2 = Thread(target=my_function_1, args=(3,)) print("This tread name is", threading.current_thread().name) # Start the first thread and wait for 0.2 seconds thread1.start() thread1.join() # Start the second thread and wait for it to complete thread2.start() thread2.join()
Khi thực hiện đoạn mã trên, nó sẽ tạo ra các kết quả sau:
This tread name is MainThread This tread name is My_thread This tread name is Thread-1 (my_function_1)
Bạn có thể gán hoặc thay đổi tên của một luồng một cách động bằng cách trực tiếp sửa đổi thuộc tính name của đối tượng luồng.
Ví dụ này cho thấy cách thay đổi động tên luồng bằng cách sửa đổi thuộc tính name của đối tượng luồng.
from threading import Thread import threading from time import sleep def my_function_1(arg): threading.current_thread().name = "custom_name" print("This tread name is", threading.current_thread().name) # Create thread objects thread1 = Thread(target=my_function_1, name='My_thread', args=(2,)) thread2 = Thread(target=my_function_1, args=(3,)) print("This tread name is", threading.current_thread().name) # Start the first thread and wait for 0.2 seconds thread1.start() thread1.join() # Start the second thread and wait for it to complete thread2.start() thread2.join()
Khi bạn thực thi đoạn mã trên, nó sẽ tạo ra các kết quả sau:
This tread name is MainThread This tread name is custom_name This tread name is custom_name
Các luồng có thể được khởi tạo với tên tùy chỉnh và thậm chí có thể được đổi tên sau khi tạo. Ví dụ này minh họa cách tạo các luồng với tên tùy chỉnh và thay đổi tên của một luồng sau khi đã tạo.
import threading def addition_of_numbers(x, y): print("This Thread name is :", threading.current_thread().name) result = x + y def cube_number(i): result = i ** 3 print("This Thread name is :", threading.current_thread().name) def basic_function(): print("This Thread name is :", threading.current_thread().name) # Create threads with custom names t1 = threading.Thread(target=addition_of_numbers, name='My_thread', args=(2, 4)) t2 = threading.Thread(target=cube_number, args=(4,)) t3 = threading.Thread(target=basic_function) # Start and join threads t1.start() t1.join() t2.start() t2.join() t3.name = 'custom_name' # Assigning name after thread creation t3.start() t3.join() print(threading.current_thread().name) # Print main thread's name
Khi thực thi, đoạn mã trên sẽ tạo ra các kết quả sau −
This Thread name is : My_thread This Thread name is : Thread-1 (cube_number) This Thread name is : custom_name MainThread