bisect and Queue modules in Python 2.4

S

SA Trygubenko

Dear All,

Python 2.4 (#1, Mar 22 2005, 21:42:42)
[GCC 3.3.5 20050117 (prerelease) (SUSE Linux)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
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!

Thank you,
Semen
 
P

Peter Otten

SA said:
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.

Peter
 
A

Alex Martelli

Peter Otten said:
SA said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top