extracting a heapq in a for loop - there must be more elegant solution

Cameron Simpson cs at zip.com.au
Tue Dec 3 18:27:25 EST 2013


On 03Dec2013 14:43, Ian Kelly <ian.g.kelly at gmail.com> wrote:
> On Tue, Dec 3, 2013 at 2:13 PM, Cameron Simpson <cs at zip.com.au> wrote:
> > On 03Dec2013 12:18, Helmut Jarausch <jarausch at igpm.rwth-aachen.de> wrote:
> >> I'd like to extracted elements from a heapq in a for loop.
> >> I feel my solution below is much too complicated.
> >> How to do it more elegantly?
> >
> > I can't believe nobody has mentioned PriorityQueue.
> 
> As far as I'm aware, the only advantage of PriorityQueue over heapq is
> that the former is thread-safe, which does not appear to be relevant
> here.  I haven't tested it for speed, but I imagine it would be a fair
> bit slower, mostly thanks to the locking it needs to do.

I could claim I do a lot of multithreaded stuff, which is true.

But really I just prefer the put/get abstraction. A heapq is very
overtly a heap manipulator applied to an arbitrary list. A Queue
is more self contained, for all that it is the same thing happening
inside.

Cheers,
-- 
Cameron Simpson <cs at zip.com.au>

"Are we alpinists, or are we tourists" followed by "tourists! tourists!"
        - Kobus Barnard <kobus at cs.sfu.ca> in rec.climbing,
          on things he's heard firsthand



More information about the Python-list mailing list