max time wait for a function
Albert Hopkins
marduk at letterboxes.org
Tue May 18 06:24:23 EDT 2010
On Tue, 2010-05-18 at 02:45 -0700, pacopyc wrote:
> Hi, I've a question for you. I'd like to call a function and waiting
> its return value for a time max (30 sec).
> The function could not respond and then I must avoid to wait for
> infinite time. OS is Windows XP.
> Can you help me?
>
> Thank
This is how I do it with a function decorator. I probably borrowed this
from someone and not attributed it. Anyway, it works on Linux, not sure
about Windows:
def function_timeout(seconds):
"""Function decorator to raise a timeout on a function call"""
import signal
class FunctionTimeOut(Exception):
pass
def decorate(f):
def timeout(signum, frame):
raise FunctionTimeOut()
def funct(*args, **kwargs):
old = signal.signal(signal.SIGALRM, timeout)
signal.alarm(seconds)
try:
result = f(*args, **kwargs)
finally:
signal.signal(signal.SIGALRM, old)
signal.alarm(0)
return result
return funct
return decorate
More information about the Python-list
mailing list