cdj*_*djc 11 python queue multithreading language-design
内置函数len()
(https://docs.python.org/3/library/functions.html#len)返回" 的对象的长度(项目数) ",但这不是用于实现queue.Queue
(HTTPS: //docs.python.org/3/library/queue.html).相反,queue.Queue
有一个qsize()
方法,当它显然有一个长度时返回队列的近似大小; 您可以Queue
在构造函数中指定a的最大长度.类似collections.deque
的确合作len
.
什么是不使用公共的原因len()
了queue.Queue
?或者:如果qsize
被命名__len__
为启用该len()
功能,会出现什么问题?
Tim*_*ers 11
len()
没有实施,queue.Queue
因为它会是一个"有吸引力的滋扰":只有专家才应该考虑使用,但"友好名称"会鼓励非专家使用它.
不像大多数序列类型(如list
和deque
),一个queue.Queue
是专门打算在多线程环境中使用(并且类似地对于multiprocessing
模块的队列类型).虽然a中的项目数量Queue
肯定在任何特定时间具有确定的值,但是用户代码不可能找出该值是什么:在.qsize()
返回调用和代码可以查看返回值之间的任何数量,其他线程(或者在这种multiprocessing
情况下的进程)可能对队列的内容进行了任意数量的更改.
所以,唯一真实的东西,可以通过左右返回的值可以说.qsize()
的是,Queue
有它的许多价值观在一些过去的时间.当您可以使用返回的值时,它可能具有任意更多(或更少)的值.
当然,如果你只运行一个线程,情况并非如此 - 但是没有必要为a的实现复杂性付费Queue
(使用a list
或者deque
代替).
归档时间: |
|
查看次数: |
709 次 |
最近记录: |