【发布时间】:2017-12-01 01:35:35
【问题描述】:
内置函数len() (https://docs.python.org/3/library/functions.html#len) 返回“对象的长度(项目数)”,但对于queue.Queue(@987654322 @)。
相反,queue.Queue 有一个 qsize() 方法,它返回队列的大致大小,当它明显有长度时;您可以在构造函数中指定 Queue 的最大长度。类似的collections.deque 确实适用于len。
queue.Queue 不使用常见的len() 的原因是什么?或者:如果qsize 改为__len__ 来启用len() 功能会出现什么问题?
【问题讨论】:
-
可能是因为人们希望
len返回一个准确的值,而不是一个近似值。而且它应该很快。要实现准确的__len__,必须暂时锁定队列以防止添加和删除,这会影响性能。
标签: python multithreading queue language-design