enumerate is very useful and now "progresserate"
Bengt Richter
bokr at oz.net
Wed Nov 19 19:14:30 EST 2003
More information about the Python-list mailing list
Wed Nov 19 19:14:30 EST 2003
- Previous message (by thread): beeping under linux
- Next message (by thread): enumerate is very useful and now "progresserate"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, 19 Nov 2003 18:41:26 -0500, "Francis Avila" <francisgavila at yahoo.com> wrote: >Brian Kelley wrote in message ><3fbbbffd$0$577$b45e6eb0 at senator-bedfellow.mit.edu>... >>It also inspired me to write "progresserate" which returns the percent >>completed of the list and the current value. > > >>This is useful for updating progress bars and the like. I use it all >>the time, it sure saves code duplication. >> >>Is this idea something that is useful enough for inclusion in the >>standard library? (Not this code as-is, I don't show error checking for >>brevity's sake) > > >It's very neat (I always seem to want to turn every problem into a generator >problem :). But actually, in this case (unless that error checking code you >mention forbids it), you don't need a class. The only methods you define >are for the generator protocol, and none of them have arguments. So a >generator function is enough (and undoubtably faster): If it's being used to e.g. update a display, you can help overall speed by returning a change flag that is only on when a new percentage is returned, so it's easy to skip the i/o. (Of course, this makes a difference when you have size much greater than 100) e.g., (untested changes) >def progresserate(seq): > size = float(len(seq)) > iterator = iter(seq) > i = 0 percent = -1 > #what did self.last do? > while True: #StopIteration from iterator will propagate. > value = iterator.next() > i += 1 > percent = int(i/size * 100) lastpc, percent = percent, int(i/size * 100 +.5) > yield percent, value yield percent!=lastpc, percent, value > Regards, Bengt Richter
- Previous message (by thread): beeping under linux
- Next message (by thread): enumerate is very useful and now "progresserate"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list