Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def timeout(time_limit):
- def decorator(func):
- def timed_out(_signum, frame):
- raise TestTimedOut(time_limit, frame)
- def newfunc(*args, **kwargs):
- try:
- # Will only work on unix systems
- orig_handler = signal.signal(signal.SIGALRM, timed_out)
- signal.alarm(time_limit)
- except AttributeError:
- pass
- try:
- rc = func(*args, **kwargs)
- finally:
- try:
- signal.alarm(0)
- signal.signal(signal.SIGALRM, orig_handler)
- except AttributeError:
- pass
- return rc
- newfunc = make_decorator(func)(newfunc)
- return newfunc
- return decorator
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement