py.lib

Yohn Y. 2022-02-23 Parent:cab7fedf8432 Child:ff755f64cda8

23:1668cc57225b Go to Latest

py.lib/Alarm.py

. Рефакторинг бессмысленный и беспощадный

History
awgur@13 1 #!/usr/bin/python
awgur@13 2 # -*- coding: utf-8 -*-
awgur@13 3
awgur@13 4 from signal import SIGALRM, alarm, signal
awgur@13 5
awgur@23 6
awgur@13 7 class AlarmTimeout(Exception): pass
awgur@13 8
awgur@23 9
awgur@13 10 def _handler(sig, frame):
awgur@13 11 raise AlarmTimeout('Operation timeout')
awgur@13 12
awgur@23 13
awgur@23 14 class Alarm(object):
awgur@13 15 def __init__(self, timeout):
awgur@13 16 signal(SIGALRM, _handler)
awgur@13 17 alarm(timeout)
awgur@13 18
awgur@13 19 def __enter__(self):
awgur@13 20 pass
awgur@13 21
awgur@23 22 def __exit__(self, e_type, e_obj, tb):
awgur@23 23 if e_obj is None:
awgur@13 24 alarm(0)
awgur@13 25
awgur@13 26 def __del__(self):
awgur@13 27 alarm(0)
awgur@13 28