Luồng python3
Main stream is running the other program in the same time point. Một ví dụ điển hình về đa luồng chẳng hạn như trong một máy tính, có thể đồng thời ta có thể sử dụng phần mềm A, phần mềm B…. in the same time or open them song song với nhau. Trong Python, việc chạy các chương trình cùng một thời điểm (đa luồng) sẽ mang lại nhiều lợi ích khác nhau như Show
Trong Python, cung cấp sẵn thư viện cho chúng tôi để xử lý đa luồng. Thư viện đó chính là _thread và để sử dụng nó ta chỉ cần nhập thư viện có sẵn này vào chương trình như sau import _thread Sau khi thư viện được nhập vào chương trình, bạn hoàn toàn có thể sử dụng các phương thức có sẵn trong _thread để thực hiện xử lý các tác vụ đa luồng trong Python 2. Tạo luồng mới (Chủ đề mới) trong PythonCác chương trình Python trước đây mà ta từng biết, chúng đều thực hiện chạy độc lập với nhau (vì chưa sử dụng đa luồng). Trong một số trường hợp hoặc một số yêu cầu bắt buộc, chúng ta cần phải chạy các chương trình một cách song song với nhau (hoặc chạy đa luồng) trong Python bằng cách tạo ra các luồng mới Như đã đề cập ở trên, thư viện _thread trong Python sẽ hỗ trợ các tác vụ đa luồng này. Trong đó, bắt đầu tạo ra một luồng mới (luồng mới) mà chúng ta cần phải sử dụng hàm _thread. start_new_thread() to make this thing – Hàm này được sử dụng một cách nhanh chóng và hiệu quả để tạo ra các luồng mới trong cả hệ điều hành Linux hoặc Windows. Cú pháp đầy đủ của hàm như sau _thread.start_new_thread ( function, args[, kwargs] ) in which
Một ví dụ dưới đây, sử dụng hàm _thread. start_new_thread() để thực hiện chạy đa luồng đối với hàm có tên là print_time(tenLuong, delay) và các tham số truyền vào hàm là tenLuong, delay. import _thread import time # Dinh nghia mot ham duoc chay trong luong moi def print_time(tenLuong, delay): count = 0 while count < 5: time.sleep(delay) count += 1 print ("{0}: {1}".format(tenLuong, time.ctime(time.time()))) # Tao hai luong song song va thuc thi chung try: _thread.start_new_thread(print_time, ("Luong 1", 2,)) _thread.start_new_thread(print_time, ("Luong 2", 4,)) except: print ("Loi: Khong the bat dau luong moi") while 1: pass Kết quả Lương 2. Thứ hai 23 tháng 5 18. 39. 35 2022 Lương 1. Thứ hai 23 tháng 5 18. 39. 35 2022 Lương 1. Thứ hai 23 tháng 5 18. 39. 37 2022 Lương 2. Thứ hai 23 tháng 5 18. 39. 39 2022 Lương 1. Thứ hai 23 tháng 5 18. 39. 39 2022 Lương 1. Thứ hai 23 tháng 5 18. 39. 41 2022 Lương 2. Thứ hai 23 tháng 5 18. 39. 43 2022 Lương 2. Thứ hai 23 tháng 5 18. 39. 47 2022 Lương 2. Thứ hai 23 tháng 5 18. 39. 51 2022 Có thể thấy rằng ở ví dụ trên, ta chạy hàm print_time() bằng cách chạy đồng thời và song song với nhau. Thời gian của luồng 1 trong hàm print_time() được chạy cách nhau 2 giây và thời gian của luồng 2 trong hàm print_time() được chạy cách nhau 4 giây 3. Mô-đun phân luồng trong Python3. 1 Tổng số mô-đun Threading trong PythonMô-đun Threading được coi là thư viện xử lý phân luồng cao cấp hơn so với _thread mà ở phần trước ta đã sử dụng để xử lý đa luồng. Để sử dụng mô-đun được mô-đun Threading ta cần nhập chúng vào trong chương trình Python thì cần sử dụng như sau import threading Như đã đề cập, mô-đun này là mô-đun cao cấp hơn so với _thread vì vậy chúng tôi cũng cung cấp thêm nhiều lớp và phương thức để xử lý nhiều luồng hơn và được liệt kê trong bảng xử lý dưới đây Phương thức chức năng phân luồng. activeCount()Trả về số đối tượng luồng đang hoạt động. xâu chuỗi. currentThread()Trả về luồng đối tượng số trong điều khiển luồng của người gọi. luồng. enumerate()Trả về danh sách tất cả các luồng đối tượng đang hoạt độngNgoài các phương thức trên, trong mô-đun Threading còn có một lớp Thread để phát triển đa luồng. Trong lớp Chủ đề này cũng có các phương thức sau 3. 2 Tạo luồng mới bằng mô-đun Phân luồng trong PythonĐể tạo một luồng mới bằng cách sử dụng mô-đun Threading, chúng ta cần thực hiện 3 bước chính được miêu tả như sau
Các lớp con được kế thừa lại từ lớp Chủ đề đều có khả năng phản ánh lại thành một cách riêng và để thực hiện phân luồng cho lớp đó, chúng ta sẽ gọi thông qua phương thức start() và sau đó gọi đến phương thức run() import threading import time exitFlag = 0 class myThread(threading.Thread): def __init__(self, idLuong, tenLuong, soLuong): threading.Thread.__init__(self) self.threadID = idLuong self.name = tenLuong self.counter = soLuong def run(self): print("Bat dau luong: " + self.name) print_time(self.name, 5, self.counter) print ("Ket thuc luong: " + self.name) def print_time(tenLuong, soLuong, delay): while soLuong: if exitFlag: tenLuong.exit() time.sleep(delay) print ("{0}: {1}".format(tenLuong, time.ctime(time.time()))) soLuong -= 1 # Tao luong moi luong1 = myThread(1, "Luong-1", 1) luong2 = myThread(2, "Luong-2", 2) # Bat dau luong moi luong1.start() luong2.start() print("Thoat khoi luong chinh!") Kết quả Bát đầu lượng. Luong-1Bát đầu lương. Luong-2 Thoat khoi luong chinh. Luong-1. T3 24 tháng 5 12. 38. 12 2022 Luong-2. T3 24 tháng 5 12. 38. 13 2022 Luong-1. T3 24 tháng 5 12. 38. 13 2022 Luong-1. T3 24 tháng 5 12. 38. 14 2022 Luong-2. T3 24 tháng 5 12. 38. 15 2022 Luong-1. T3 24 tháng 5 12. 38. 15 2022 Luong-1. T3 24 tháng 5 12. 38. 16 2022 Kết thúc lượng. Lương-1 Lương-2. T3 24 tháng 5 12. 38. 17 2022 Luong-2. T3 24 tháng 5 12. 38. 19 2022 Luong-2. T3 24 tháng 5 12. 38. 21 2022 Ket thuc luong. Lương-2 3. 3 Đồng bộ hóa các luồng trong PythonMô-đun Threading được cung cấp với Python bao gồm cơ chế khóa đơn giản để khai thác cho phép bạn đồng bộ hóa các luồng. Một khóa mới được tạo bằng cách gọi phương thức lock(). Phương thức thu được (chặn) của khóa đối tượng mới được sử dụng để buộc các luồng chạy đồng bộ. Tham số chặn của phương thức này là tùy chọn, chúng tôi cho phép bạn kiểm tra xem luồng có chờ lấy khóa hay không
Cuối cùng, phương thức phát hành() của đối tượng từ khóa mới được sử dụng để giải nén từ khóa khi nó không còn được yêu cầu |