[PYTHON] 파이썬에서 함수를 타임 아웃하는 방법, 타임 아웃이 1 초 미만입니다.
PYTHON파이썬에서 함수를 타임 아웃하는 방법, 타임 아웃이 1 초 미만입니다.
내가 정말 많은 양의 로그 파일을 검색하고 있는데 re.match () 함수를 사용하여 저장 한 정규 표현식 (RegExses)에 그룹에 해당 행을 분배하고있다. 불행히도 내 RegExses 중 일부는 너무 복잡하고 파이썬은 때로는 지옥을 되돌릴 수 없습니다. 이 때문에 나는 어떤 종류의 타임 아웃으로 그것을 보호 할 필요가있다.
나는 오늘 아침이 문제에 대한 해결책을 찾고자했지만 나는 만족스러운 답을 찾지 못했다.
해결법
-
==============================
1.해결책:
해결책:
결국, 그 해결책은 그렇게 복잡하지는 않았지만, 나는 희망없는 누적 된 사람들이이 간단한 해결책을 여기에 게시하는 것이 유용 할 것이라고 생각했습니다.
나는 여기에 게시 된 약간 수정 된 스크립트를 가지고있다 : 끝내기에는 너무 오래 걸리는 경우 타임 아웃 기능.
그리고 여기 코드가 있습니다 :
from functools import wraps import errno import os import signal class TimeoutError(Exception): pass def timeout(seconds=10, error_message=os.strerror(errno.ETIME)): def decorator(func): def _handle_timeout(signum, frame): raise TimeoutError(error_message) def wrapper(*args, **kwargs): signal.signal(signal.SIGALRM, _handle_timeout) signal.setitimer(signal.ITIMER_REAL,seconds) #used timer instead of alarm try: result = func(*args, **kwargs) finally: signal.alarm(0) return result return wraps(func)(wrapper) return decorator
그리고 다음과 같이 사용할 수 있습니다.
from timeout import timeout from time import time @timeout(0.01) def loop(): while True: pass try: begin = time.time() loop() except TimeoutError, e: print "Time elapsed: {:.3f}s".format(time.time() - begin)
어떤 지문
Time elapsed: 0.010s
나는 이것이 누군가에게 도움이되기를 바랍니다 :-)
from https://stackoverflow.com/questions/11901328/how-to-timeout-function-in-python-timeout-less-than-a-second by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Python2.x에서 print () (함수 버전) 사용하기 (0) | 2018.10.14 |
---|---|
[PYTHON] Tkinter로 GIF 애니메이션 재생 [duplicate] (0) | 2018.10.14 |
[PYTHON] Pandas : dropna 이후 inplace rename을위한 특별한 성능 저하 (0) | 2018.10.14 |
[PYTHON] 십진수 표 변환 (0) | 2018.10.14 |
[PYTHON] LIKE에서 와일드 카드를 사용하는 Python SQLite 매개 변수 대체 (0) | 2018.10.14 |