Timeout test hangs IDLE

Sergio Correia sergio.correia at gmail.com
Wed Dec 5 18:03:52 EST 2007


I once made a small app that used threads on IDLE.

There was a strange error when using 'print' & threads. When what I printed
filled the entire screen, instead of moving all the text up, IDLE just
hanged. Try running your code from the shell instead, to see if the problem
is in IDLE.

HTH,
Sergio

On Dec 5, 2007 5:07 PM, <kyosohma at gmail.com> wrote:

> On Dec 5, 10:37 am, "Andreas Tawn" <andreas.t... at ubisoft.com> wrote:
> > > > On Dec 5, 6:00 am, "Andreas Tawn" <andreas.t... at ubisoft.com> wrote:
> > > > > I'm trying to integrate the timeout function from
> > > > herehttp://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/47
> > > > 3878into a
> > > > > long running automation script and the following code
> > > > causes IDLE after
> > > > > 20 or 30 iterations in countTest.
> >
> > > > > This is in 2.5, XP and there's no traceback.
> >
> > > > > Could someone point me at the user error?
> >
> > > > > Thanks in advance.
> >
> > > > > def countTest():
> > > > >     for i in xrange(10000000):
> > > > >         print i
> > > > >     return True
> >
> > > > > def timeout(func, args=(), kwargs={}, timeout_duration=1,
> > > > default=None):
> > > > >     import threading
> > > > >     class InterruptableThread(threading.Thread):
> > > > >         def __init__(self):
> > > > >             threading.Thread.__init__(self)
> > > > >             self.result = None
> >
> > > > >         def run(self):
> > > > >             try:
> > > > >                 self.result = func(*args, **kwargs)
> > > > >             except:
> > > > >                 self.result = default
> >
> > > > >     it = InterruptableThread()
> > > > >     it.start()
> > > > >     it.join(timeout_duration)
> > > > >     if it.isAlive():
> > > > >         return default
> > > > >     else:
> > > > >         return it.result
> >
> > > > > def runTest():
> > > > >     timeout(countTest, timeout_duration=5)
> >
> > > > > if __name__ == "__main__":
> > > > >     runTest()
> >
> > > > I'm confused. What does it cause IDLE to do? I tried running the
> > > > script and it ran fine. I killed it 17346 since I have no
> > > intention of
> > > > letting it tie up my work for your extraordinary large iteration
> > > > number.
> >
> > > > I'm using Python 2.4 on Windows XP.
> >
> > > > Mike
> >
> > > Sorry, I need a better proof-reader.
> >
> > > When I run that code, the output gets to ~26 and then IDLE (or the
> > > shell, I'm not sure which) hangs and there's  zero CPU activity in the
> > > pythonw.exe process.
> >
> > Also, I should say that the the idea is that the huge iteration should
> > timeout after 5 seconds. I only gave it a 10000000 range because I
> > didn't know how fast it would get through the loop. Perhaps you stopped
> > it before the timeout triggered?
> >
> > Cheers,
> >
> > Drea
>
> No...I ran it for at least 30-60 seconds. Making a thread stop on
> command is a pain though.
>
> This link taught me one way to do it, but I cannot vouch how will it
> works as I've never aborted any of my threads:
>
> http://wiki.wxpython.org/LongRunningTasks
>
> Mike
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20071205/bc76039f/attachment.html>


More information about the Python-list mailing list