Python中的限制队列
如果我想创建一个有大小限制的队列,但我想在一个函数里设置这个限制,而不是像这样使用 Class BoundedQueue.Queue(maxsize = 4) 呢?(关于最大限制队列的信息可以参考这个链接:http://docs.python.org/2/library/queue.html)
有没有什么建议?
这是我的代码;capacity
是最大限制。
class BoundedQueue:
# Constructor, which creates a new empty queue, with user-specified capacity:
def __init__(self, capacity):
self.items = []
assert(capacity >= 0), "not positive"
try:
capacity = int(capacity)
except TypeError as inst:
print("Error", inst.args)
except:
print("error")
else:
itemmax = capacity
1 个回答
0
无论你是自己创建一个 BoundedQueue
类,还是从已有的类继承,似乎你缺少的一个关键点是,你需要在类的 __init__()
方法中存储最大容量(也就是 self._maxsize = capacity
),然后在队列的其他方法中添加元素时使用这个最大容量,以防止超过这个数量。
为了做到这一点,你还需要跟踪当前队列里有多少个元素,因为元素会被添加和移除。这意味着你可能还需要一个 self._cursize
属性来记录这个数量,这个属性也应该在构造函数中初始化。如果你是从一个基础类继承,它可能已经为你跟踪这个数量了,所以你可以直接使用那个。
如果你决定自己创建一个类,可以参考 Peter Norvig 的 《Python IAQ: 不常见的问题》 网站中“Q: Python 缺少哪些主要类型?”部分的一些(无界)队列实现示例,这可能会对你有帮助。