프로그램/Python / / 2018. 12. 18. 11:51

python timeout (only linux)

반응형

ex)


import signal
import time


def log_print() :
count = 1
while 1:
print ("count : ", count)
count = count + 1
time.sleep(1)



class timeout:
def __init__(self, seconds=1, error_message='Timeout'):
self.seconds = seconds
self.error_message = error_message
def handle_timeout(self, signum, frame):
raise TimeoutError(self.error_message)
def __enter__(self):
signal.signal(signal.SIGALRM, self.handle_timeout)
signal.alarm(self.seconds)
def __exit__(self, type, value, traceback):
signal.alarm(0)



# timeout code seconds setting

try :
with timeout(seconds=10):
log_print()
except TimeoutError as e :
print ("Exception message : ", e)



윈도우에서 실행하면 AttributeError: module 'signal' has no attribute 'SIGALRM' 라는 에러가 발생.

linux 환경에서 사용한 코드

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유