Kill a function while it's being executed
noama at answers.com
Wed Feb 4 16:54:09 CET 2009
About the hijacking - I *might* have done it without understanding what
I did (replied to a previous message and then changed the subject), if
that's what you mean...
From: python-list-bounces+noama=answers.com at python.org
[mailto:python-list-bounces+noama=answers.com at python.org] On Behalf Of
Sent: Wednesday, February 04, 2009 5:26 PM
To: python-list at python.org
Subject: Re: Kill a function while it's being executed
On Wed, 2009-02-04 at 13:40 +0200, Noam Aigerman wrote:
> Hi All,
> I have a script in which I receive a list of functions. I iterate over
> the list and run each function. This functions are created by some
> user who is using the lib I wrote. Now, there are some cases in which
> the function I receive will never finish (stuck in infinite loop).
> Suppose I use a thread which times the amount of time passed since the
> function has started, Is there some way I can kill the function after
> certain amount of time has passed (without asking the user who's
> me the list of functions to make them all have some way of notifying
> them to finish)?
> Thanks, Noam
Noam, did you hijack a thread?
You could decorate the functions with a timeout function. Here's one
that I either wrote or copied from a recipe (can't recall):
"""Function decorator to raise a timeout on a function call"""
def timeout(signum, frame):
def funct(*args, **kwargs):
old = signal.signal(signal.SIGALRM, timeout)
result = f(*args, **kwargs)
func_dec = function_timeout(TIMEOUT_SECS)
for func in function_list:
timeout_function = func_dec(func)
More information about the Python-list