python中的有界队列

时间:2013-02-12 21:37:43

标签: python python-3.x stack queue

如果我想创建一个带有绑定的队列,但是我想在函数内部创建队列的边界而不是使用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 :(得分:0)

无论您是创建自己的BoundedQueue类还是创建现有的类,您似乎缺少的是您需要在类__init__()中存储最大大小(即self._maxsize = capacity然后在任何Queue的其他方法中使用它,这些方法添加元素以防止超出它们的数量。

为了做到这一点,你还需要跟踪添加和删除它们的内容,这意味着你可能还需要一个self._cursize属性来获取该值也应该在构造函数中初始化。如果你是一个基类的子类,它可能已经为你跟踪,所以你可以改用它。

在“问:Python中缺少哪些其他主要类型?”中有一些(无界)队列实现的例子。 Peter Norvig的The Python IAQ: Infrequently Answered Questions网站部分,如果您决定创建自己的课程,可能会觉得很有用。