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