bisect and Queue modules in Python 2.4

Alex Martelli aleaxit at yahoo.com
Thu Mar 16 10:33:18 EST 2006


Peter Otten <__peter__ at web.de> wrote:

> SA Trygubenko wrote:
> 
> > q.queue used to be a list, and now it is something else?
> > 
> > I was using bisect module to implement min priority queue, as described
> > in python library reference (see
> > http://www.python.org/doc/2.3.5/lib/bisect-example.html). I have found
> > out that in Python 2.4 q.queue does not support "insert" anymore, which
> > breaks bisect. Please help!
> 
> class PriorityQueue(Queue.Queue):
>     def _put(self, item):
>         bisect.insort(self.queue, item)
>     def _init(self, maxsize):
>         self.maxsize = maxsize
>         self.queue = []
>     def _get(self):
>         return self.queue.pop(0)
> 
> or somesuch might work.

Yep, it should, but using heapq instead of bisect is, I suspect, way
better -- there's a recipe on the Cookbook for that (Queue+heapq), and
though I (of course;-) prefer the version as edited for the printed
(2nd) edition, the online one can also no doubt be useful.


Alex



More information about the Python-list mailing list