0
다음 코드에서 특정 시간 제한을 초과하면 'execute'메서드에 전달 된 함수 (막대)의 실행을 중지시키는 'TimedExecutor'클래스를 만들려고합니다. 그러나 오류 메시지가 표시 되더라도 프로그램 실행이 중지되지 않습니다.신호 알람이 오류를 발생시키지 않습니다.
참고 : 외부 모듈에서 제공하는 기능 bar()
을 변경하면 안됩니다.
다음 코드에서 특정 시간 제한을 초과하면 'execute'메서드에 전달 된 함수 (막대)의 실행을 중지시키는 'TimedExecutor'클래스를 만들려고합니다. 그러나 오류 메시지가 표시 되더라도 프로그램 실행이 중지되지 않습니다.신호 알람이 오류를 발생시키지 않습니다.
참고 : 외부 모듈에서 제공하는 기능 bar()
을 변경하면 안됩니다.
당신의 치유 기가 치명적인 경우를 제외하고는 삼키는 것입니다.
그것은 bar()
의 다음 인쇄와는 TimeoutListener
컨텍스트 관리자에 의해 제기 된 오류를 삭제 그 루프 중 하나 except 절입니다. 그런 다음 루프가 다시 시작됩니다.
bar()
은 (는) TimedExecutor
이 제기 할 수있는 예외를 알지 못합니다. 대신, .execute()
를 호출 bar()
의 발신자는 알고 있어야합니다
from aditya.utils import TimedExecutor, TimeoutException
...
try:
TimedExecutor.execute(2, bar)
except TimeoutException:
print("Timed out executing bar")
이 솔루션은 너무 작동하지 않습니다. 작업 코드를 제공 할 수 있습니까? – Aditya
해결책은 단지'bar()'에서 try/except 블록을 제거하는 것입니다. 내가 제시 한 것은 의사 코드 리펙터였습니다. – pilcrow
아니요, 기능 bar()는 변경할 수 없으며 다른 모듈에서 가져온 것입니다. 실행 시간을 처리하는 코드를 설계해야합니다. – Aditya