2013-02-12 3 views
0

Что делать, если я хотел создать очередь с привязкой, но я хочу создать привязку для очереди внутри функции вместо использования класса BoundedQueue.Queue (maxsize = 4)? (Для получения информации о максимальной связанной очереди: http://docs.python.org/2/library/queue.html)Ограниченная очередь в python

Любые предложения?

Это мой код; 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 
+0

Каков ваш вопрос? не уверен, что я следую – Crisfole

+3

Я не уверен, что ваш реальный вопрос здесь. «Создайте привязку для очереди внутри функции», вы имеете в виду, что емкость будет переменной, а не буквенным значением? Нет никакой причины, по которой стандартный класс Class BoundedQueue.Queue (maxsize = capacity) не должен работать здесь. –

+0

[deque] (http://docs.python.org/2/library/collections.html#collections.deque) может быть ограничено maxlen - хватит ли этого? – sotapme

ответ

0

ли создать вам свой собственный BoundedQueue класс или подкласс существующего, то, что вы, кажется, не хватает, что вам нужно будет хранить максимальный размер в класса __init__() (т.е. self._maxsize = capacity), а затем использовать его в любом других методов Queue, которые добавляют элементы, чтобы предотвратить их превышение.

Для этого вам также необходимо будет отслеживать, сколько вещей находится в нем по мере их добавления и удаления, что означает, что вам также понадобится атрибут self._cursize для этого значения, которое также должно быть инициализируется в конструкторе. Если вы подклассифицируете базовый класс, он может уже отслеживать это для вас, поэтому вы можете просто использовать это вместо этого.

В «Q: Какие еще основные типы отсутствуют на Python?» Есть некоторые примеры (неограниченных) реализаций очереди? раздел сайта The Python IAQ: Infrequently Answered Questions Питера Норвига, который вам может пригодиться, если вы решите создать свой собственный класс.

Смежные вопросы