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