Python cung cấp thread Module và threading Module để bạn có thể bắt đầu một thread mới cũng như một số tác vụ khác trong khi lập trình đa luồng. Mỗi một Thread đều có vòng đời chung là bắt đầu, chạy và kết thúc. Một Thread có thể bị ngắt (interrupt), hoặc tạm thời bị dừng (sleeping) trong khi các Thread khác đang chạy – được gọi là yielding.
Phương thức dưới đây có sẵn trong thread Module được sử dụng để bắt đầu một Thread mới:
thread.start_new_thread ( function, args[, kwargs] )
Lời gọi phương thức này được trả về ngay lập tức và Thread con bắt đầu và gọi hàm function với danh sách các tham số args đã truyền. Khi hàm function trả về, thì Thread kết thúc.
Ở đây, args là một Tuple của các tham số, sử dụng một Tuple trống để gọi hàm function mà không truyền cho nó bất kỳ tham số nào. Tham số kwargs là một Dictionary của các tham số từ khóa tùy ý. (bạn thao khảo chương Hàm trong Python để biết chi tiết tham số từ khóa là gì)
import thread import time# Dinh nghia mot ham cho thread def print_time( threadName, delay): count = 0 while count < 5: time.sleep(delay) count += 1 print "%s: %s" % ( threadName, time.ctime(time.time()) )# Tao hai thread nhu sau try: thread.start_new_thread( print_time, ("Thread-1", 2, ) ) thread.start_new_thread( print_time, ("Thread-2", 4, ) ) except: print "Error: khong the bat dau thread"while 1: pass
Kết quả là:
Thread-1: Mon Nov 21 15:42:17 2015 Thread-1: Mon Nov 21 15:42:19 2015 Thread-2: Mon Nov 21 15:42:19 2015 Thread-1: Mon Nov 21 15:42:21 2015 Thread-2: Mon Nov 21 15:42:23 2015 Thread-1: Mon Nov 21 15:42:23 2015 Thread-1: Mon Nov 21 15:42:25 2015 Thread-2: Mon Nov 21 15:42:27 2015 Thread-2: Mon Nov 21 15:42:31 2015 Thread-2: Mon Nov 21 15:42:35 2015
Mặc dù thread Module rất hiệu quả với đa luồng tầm thấp nhưng khi so sánh với threading Module thì nó có nhiều điểm hạn chế. Phần tiếp theo giới thiệu về threading Module.
Module mới này được bao với Python 2.4 nhằm cung cấp nhiều hỗ trợ mạnh mẽ và cấp độ cao hơn cho các Thread trong khi so sánh với thread Module ở trên. Ngoài các phương thức có trong thread Module, thì threading Module còn bổ sung thêm một số phương thức khác, đó là:
Bên cạnh đó, threading Module có lớp Thread để triển khai đa luồng. Lớp này có các phương thức sau:
» Tin mới nhất:
» Các tin khác: