Hướng dẫn python queue between threads - hàng đợi python giữa các chuỗi
Khi ta chạy một số thread cũng giống như chạy nhiều chương trình khác nhau đồng thời, nhưng nó đem lại một số lợi ích như sau: Show
Một thread có một khởi động, một chu trình và một kết thúc. Nó có con trỏ để chỉ dẫn theo dõi vị trí trong ngữ cảnh mà nó đang chạy.
Start một New ThreadĐể sinh ra một luồng khác, ta gọi phương thức sau trong module
Phương thức này cho phép khởi tạo một thread nhanh chóng mà hiệu quả trong cả môi trường Linux và Windows Phương thức gọi trả về ngay lập tức và các thread con bắt đầu gọi hàm với danh sách của 0. Khi func retrurn thì thread kết thúc. Ở đây 0 là một tuple. Nó rỗng khi không truyền bất kỳ đối số nào, 2 là 1 dictionary optional của keyword arguments Ví dụ:
Khi đoạn code trên được thực thi thì:
Mặc dù nó hiệu quả cho các luồng ở mức low-level nhưng module thread rất hạn chế so với module mới là threading modulethreading module Threading moduleThreading module hỗ trợ mạnh mẽ hơn so với module thread được đề cập ở phần trước Chúng bao gồm tất cả các method của module thread và có thêm một số phần mở rộng như: module hỗ trợ mạnh mẽ hơn so với module thread được đề cập ở phần trước Chúng bao gồm tất cả các method của module thread và có thêm một số phần mở rộng như:
Ngoài các method thì threading module còn có lớp 3 để thực hiện luồng, class có các method sau:
Tạo thread bằng Threading moduleĐể tạo một thread sử dụng threading module, ta phải thực hiện các bước sau:threading module, ta phải thực hiện các bước sau:
Một khi ta subclass của class Thread, ta có thể tạo một instance của nó và bắt đầu một thread mới bằng cách gọi method 5 mà lần lượt là 6
Và kết quả là:
Synchronizing ThreadsVới bất kỳ ngôn ngữ nào làm việc với thread đều cũng đã từng động đến đồng bộ các threads. Vậy làm thế nào thực hiện nó đối với Python Threading module cung cấp cơ chế khoá đơn giản để triển khai cho phép ta đồng bộ các thread. Một khoá mới được tạo ra bằng cách gọi method 7, nó trả về một khoá mới. Method 8 của khoá mới được sử dụng để ràng buộc các thread chạy đồng bộ. Tham số tuỳ chọn 9 cho phép ta kiểm soát thread có chờ khoá hay không. Nếu 9 đặt là 0, thread return ngay lập tức với gía trị 0 nếu không thể lấy khoá và 1 nếu khoá được thu hồi. Nếu 9 được đặt thành 1, chuỗi sẽ bị khóa và chờ khóa được giải phóng. Phương thức 2 của đối tượng khóa mới được sử dụng để giải phóng khóa khi nó không còn cần thiết nữa Ví dụ:Threading module cung cấp cơ chế khoá đơn giản để triển khai cho phép ta đồng bộ các thread. Một khoá mới được tạo ra bằng cách gọi method 7, nó trả về một khoá mới. Method 8 của khoá mới được sử
dụng để ràng buộc các thread chạy đồng bộ. Tham số tuỳ chọn 9 cho phép ta kiểm soát thread có chờ khoá hay không. Nếu 9 đặt là 0, thread return ngay lập tức với gía trị 0 nếu không thể lấy khoá và 1 nếu khoá được thu hồi. Nếu 9 được đặt thành 1, chuỗi sẽ bị khóa và chờ khóa được giải phóng. Phương thức 2 của đối tượng khóa mới được sử dụng để giải phóng khóa khi nó không còn cần thiết nữa Ví dụ:
Kết quả là
Multithreaded Priority QueueModule Queue cho phép ta create một objet queue, nó lưu giữ một số lượng item nhất định. Để kiểm soát queue ta có 1 số method sau:Queue cho phép ta create một objet queue, nó lưu giữ một số lượng item nhất định. Để kiểm soát queue ta có 1 số method sau:
Kết quả:
|