다음 프로그램은 Ctrl+C
을 무시하도록 터미널을 중단합니다. 하나의 스레드가 멈출 때마다 터미널을 다시 시작해야하기 때문에 이것은 다소 짜증이납니다.이벤트에서 대기중인 프로그램에서 키보드 인터럽트 잡기
이벤트를 기다리는 동안 KeyboardInterrupt
을 잡을 방법이 있습니까?
import threading
def main():
finished_event = threading.Event()
startThread(finished_event)
finished_event.wait()#I want to stop the program here
print('done!')
def startThread(evt):
"""Start a thread that will trigger evt when it is done"""
#evt.set()
if __name__ == '__main__':
main()
폴링없이이 작업을 수행 할 수 있습니까? – Navin
잘 모르겠습니다. 폴링과 함께 작동합니까? 왜 투표가 나쁜가? 'time.sleep (large_timeout)'이'Ctrl + C '에 의해 중단되었는지 테스트 할 수 있습니다. 여전히 폴링 중이지만 곧 Ctrl + C에 반응 할 것입니다. 이벤트에 대한 응답 성이 필요한 경우에는 'finished_event.set()'에서 반응해야하는 코드를이 스레드의 또 다른 스레드에 넣어야합니다. – jfs
글쎄, 나는 정말로 응답 성이 필요하지 않을 때에도 폴링을 피하는 경향이 있지만 이것이 유일한 해결책이라고 생각한다. – Navin