(seconds: float)
| 407 | # ============================================================================ |
| 408 | @contextlib.contextmanager |
| 409 | def time_limit(seconds: float): |
| 410 | def signal_handler(signum, frame): |
| 411 | raise TimeoutException("Timed out!") |
| 412 | |
| 413 | signal.setitimer(signal.ITIMER_REAL, seconds) |
| 414 | signal.signal(signal.SIGALRM, signal_handler) |
| 415 | try: |
| 416 | yield |
| 417 | finally: |
| 418 | signal.setitimer(signal.ITIMER_REAL, 0) |
| 419 | |
| 420 | |
| 421 | @contextlib.contextmanager |