Recursing for Progress Bar

half.italian at gmail.com half.italian at gmail.com
Tue Sep 19 00:53:00 EDT 2006


Makes perfect sense. Sometimes it takes being whacked to see it the
right way.

Thanks!

Ben Finney wrote:
> "half.italian at gmail.com" <half.italian at gmail.com> writes:
>
> > Is there a way to get around recursion limits?  Help!
> >
> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >
> >       def incrementProgress(self, window, workorder):
> >               #...
> > 		time.sleep(.1)
> > 		self.incrementProgress(window, workorder)
>
> You don't show a complete working example, so it's hard to know the
> context of this.
>
> What is the purpose of this function? Why is it performing these last
> two lines at all?
>
> Surely this function should be called by an *external* loop of the
> actual processing, with no recursion, and no enforced delay.
>
>     import time
>
>     class ProgressBar(object):
>         """ Display of progress as a horizontal bar """
>
>         update_frequency = 0.1
>
>         def __init__(self, window):
>             self.window = window
>             self._prev_increment_time = 0
>
>         def increment(self, workorder):
>             """ Increment the progress display """
>             # ... code to unconditionally update the display
>             self._prev_update_time = time.time()
>
>         def update(self, workorder):
>             """ Update the progress if necessary """
>             time_since_update = time.time() - self._prev_update_time
>             if time_since_update >= self.update_frequency:
>                 self.increment(workorder)
>
>     window = however_you_make_a_window()
>     bar = ProgressBar(window)
>
>     for foo in iterator_of_foos:
>         workorder = do_the_processing(foo)
>         bar.update(workorder)
>
> --
>  \     "Buy not what you want, but what you need; what you do not need |
>   `\           is expensive at a penny."  -- Cato, 234-149 BC, Relique |
> _o__)                                                                  |
> Ben Finney




More information about the Python-list mailing list