Chức năng tích hợp len()
(https://docs.python.org/3/library/functions.html#len) trả về "độ dài (số mục) của một đối tượng", nhưng điều này không được triển khai cho queue.Queue
(https://docs.python.org/3/library/queue.html). Thay vào đó, queue.Queue
có phương thức qsize()
trả về kích thước gần đúng của hàng đợi, khi nó rõ ràng có độ dài; bạn có thể chỉ định độ dài tối đa của một Queue
trong hàm tạo. Tương tự collections.deque
không hoạt động với len
.Tại sao len() không được triển khai cho Hàng đợi?
Lý do không sử dụng phổ biến len()
cho queue.Queue
là gì? Hoặc: Điều gì sẽ là vấn đề nếu thay vào đó, qsize
được đặt tên __len__
để bật chức năng len()
?
Có thể vì mọi người mong đợi 'len' trả lại giá trị chính xác, không phải là giá trị gần đúng. Và nó phải nhanh. Để thực hiện một '__len__' chính xác, Hàng đợi sẽ phải bị khóa tạm thời để ngăn việc bổ sung và xóa bỏ, điều này sẽ ảnh hưởng đến hiệu suất. –