Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. def timeout(time_limit):
  2.  
  3. def decorator(func):
  4.  
  5. def timed_out(_signum, frame):
  6. raise TestTimedOut(time_limit, frame)
  7.  
  8. def newfunc(*args, **kwargs):
  9. try:
  10. # Will only work on unix systems
  11. orig_handler = signal.signal(signal.SIGALRM, timed_out)
  12. signal.alarm(time_limit)
  13. except AttributeError:
  14. pass
  15. try:
  16. rc = func(*args, **kwargs)
  17. finally:
  18. try:
  19. signal.alarm(0)
  20. signal.signal(signal.SIGALRM, orig_handler)
  21. except AttributeError:
  22. pass
  23. return rc
  24.  
  25. newfunc = make_decorator(func)(newfunc)
  26. return newfunc
  27.  
  28. return decorator
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement