(seconds: float)
| 589 | # ============================================================================ |
| 590 | @contextlib.contextmanager |
| 591 | def time_limit(seconds: float): |
| 592 | def signal_handler(signum, frame): |
| 593 | raise TimeoutException("Timed out!") |
| 594 | |
| 595 | signal.setitimer(signal.ITIMER_REAL, seconds) |
| 596 | signal.signal(signal.SIGALRM, signal_handler) |
| 597 | try: |
| 598 | yield |
| 599 | finally: |
| 600 | signal.setitimer(signal.ITIMER_REAL, 0) |
| 601 | |
| 602 | |
| 603 | @contextlib.contextmanager |