Python中的限制队列

0 投票
1 回答
3032 浏览
提问于 2025-04-17 15:40

如果我想创建一个有大小限制的队列,但我想在一个函数里设置这个限制,而不是像这样使用 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 缺少哪些主要类型?”部分的一些(无界)队列实现示例,这可能会对你有帮助。

撰写回答