이 게시물을 읽는 것이 좋습니다 Timeout function if it takes too long to finish.
요점은 신호를 사용하여 코드를 중단하고 오류가 발생하여이를 잡아낼 수 있다는 것입니다. 당신이 예에서
: 당신은 다음 코드와이를 테스트 할 수 있습니다
def _handle_timeout(signum,frame):
raise TimeoutError("Execution timed out")
driver.get("url")
signal.signal(signal.SIGALRM, _handle_timeout)
while True:
try:
signal.alarm(<timeout value>)
<operation>
signal.alarm(0)
except:
driver.refresh()
:
import time
import signal
def _handle_timeout(signum,frame):
raise TimeoutError("Execution timed out")
def test(timeout,execution_time):
signal.signal(signal.SIGALRM, _handle_timeout)
try:
signal.alarm(timeout)
time.sleep(execution_time)
signal.alarm(0)
except:
raise
else:
print "Executed successfully"
이 때 오류 execution_time > timeout
을 올릴 것이다.
여기에 언급 된대로 Python signal don't work even on Cygwin? 위의 코드는 Windows 시스템에서 작동하지 않습니다.
여기를 참조하십시오 : http://stackoverflow.com/questions/8616630/time-out-decorator-on-a-multprocessing-function – ebarr