>  기사  >  백엔드 개발  >  `raw_input()`을 사용하여 Python에서 시간 제한 사용자 입력을 구현하는 방법은 무엇입니까?

`raw_input()`을 사용하여 Python에서 시간 제한 사용자 입력을 구현하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-19 16:35:02770검색

How to Implement Time-Limited User Input in Python Using `raw_input()`?

원시 입력을 사용한 시간 제한 사용자 입력

Python에서는 raw_input() 함수를 사용하여 사용자에게 입력하라는 메시지를 표시할 수 있습니다. 그러나 프로그램이 무기한 중단되지 않도록 사용자 입력 대기 시간을 제한하려는 시나리오가 있을 수 있습니다.

스레딩 타이머를 사용한 솔루션

플랫폼 및 Windows 관련 솔루션의 경우 스레딩 모듈에서 threading.Timer를 활용할 수 있습니다. 필요한 모듈 가져오기:

import thread
import threading

raw_input_with_timeout이라는 함수 정의:

def raw_input_with_timeout(prompt, timeout=30.0):
    print(prompt, end=' ')    
    timer = threading.Timer(timeout, thread.interrupt_main)
    astring = None
    try:
        timer.start()
        astring = input(prompt)
    except KeyboardInterrupt:
        pass
    timer.cancel()
    return astring

이 함수는 프롬프트를 인쇄하고 타이머를 시작하며 입력을 사용하여 사용자 입력에 대한 프롬프트를 표시합니다. 사용자가 입력하는 데 지정된 제한 시간보다 오래 걸리면 타이머가 기본 스레드를 중단하여 KeyboardInterrupt 예외가 발생합니다. 추가 중단을 방지하기 위해 타이머가 취소됩니다.

입력 시간이 초과되면 None을 반환합니다. 사용자가 시간 초과 전에 입력을 제공하면 입력된 문자열이 반환됩니다.

참고:

  • 시간 초과와 사용자 시작 중단을 구별하려면(예: , 사용자가 Ctrl C)를 누르면 인터럽트가 시간 초과로 인해 발생했는지 여부에 대한 표시를 전역 변수에 저장하거나 try/Exception을 사용하여 처리할 수 있습니다. KeyboardInterrupt 예외를 중단하고 그에 따라 플래그를 설정합니다.
  • 이 접근 방식은 Windows에서 stdin과 같은 '일반 파일'에 대해 작동하지 않습니다. Windows 관련 구현의 경우 시간 초과를 확인하는 동안 루프에서 msvcrt.kbhit 및 msvcrt.getche를 폴링하는 것이 좋습니다.

위 내용은 `raw_input()`을 사용하여 Python에서 시간 제한 사용자 입력을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.