Mercurial > cpython-lru_cache-weakref
diff Lib/Queue.py @ 44716:b469e90273eb
Sync-up Queue.py with Py2.6
| author | Raymond Hettinger <python@rcn.com> |
|---|---|
| date | Thu, 17 Jan 2008 00:13:27 +0000 |
| parents | 6e5675ca2559 |
| children |
line wrap: on
line diff
--- a/Lib/Queue.py Wed Jan 16 00:20:32 2008 +0000 +++ b/Lib/Queue.py Thu Jan 17 00:13:27 2008 +0000 @@ -2,8 +2,9 @@ from time import time as _time from collections import deque +import heapq -__all__ = ['Empty', 'Full', 'Queue'] +__all__ = ['Empty', 'Full', 'Queue', 'PriorityQueue', 'LifoQueue'] class Empty(Exception): "Exception raised by Queue.get(block=0)/get_nowait()." @@ -182,7 +183,7 @@ def _init(self, maxsize): self.queue = deque() - def _qsize(self): + def _qsize(self, len=len): return len(self.queue) # Put a new item in the queue @@ -192,3 +193,38 @@ # Get an item from the queue def _get(self): return self.queue.popleft() + + +class PriorityQueue(Queue): + '''Variant of Queue that retrieves open entries in priority order (lowest first). + + Entries are typically tuples of the form: (priority number, data). + ''' + + def _init(self, maxsize): + self.queue = [] + + def _qsize(self, len=len): + return len(self.queue) + + def _put(self, item, heappush=heapq.heappush): + heappush(self.queue, item) + + def _get(self, heappop=heapq.heappop): + return heappop(self.queue) + + +class LifoQueue(Queue): + '''Variant of Queue that retrieves most recently added entries first.''' + + def _init(self, maxsize): + self.queue = [] + + def _qsize(self, len=len): + return len(self.queue) + + def _put(self, item): + self.queue.append(item) + + def _get(self): + return self.queue.pop()
