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 次 |
| 最近记录: |