>백엔드 개발 >파이썬 튜토리얼 >Python에서 시간 제한이 있는 사용자 입력을 어떻게 구현할 수 있나요?

Python에서 시간 제한이 있는 사용자 입력을 어떻게 구현할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-11-27 01:49:11455검색

How Can I Implement Time-Limited User Input in Python?

Python에서 시간 제한이 있는 사용자 입력

입력 함수로 사용자 입력을 요청할 때 사용자가 입력할 수 있는 시간을 제한할 수 있습니다. 응답하기 위해. 이를 통해 시간 초과를 적절하게 처리하고 적절한 피드백을 제공할 수 있습니다.

시간 제한 입력 사용

시간 제한 입력을 구현하려면 다음 접근 방식을 고려하세요.

스레드 접근 차단(Python 2/3)

import threading

timeout = 10  # In seconds
t = threading.Timer(timeout, lambda: print('Sorry, times up.'))
t.start()

prompt = "You have {} seconds to choose the correct answer...\n".format(timeout)
answer = input(prompt)
t.cancel()  # Stop the timer if the user provides a response

비차단 스레드 접근 방식(Python 3)

import sys
import msvcrt  # For Windows
import time  # For Unix

def input_with_timeout(prompt, timeout, timer=time.monotonic):
    sys.stdout.write(prompt)
    sys.stdout.flush()
    endtime = timer() + timeout
    result = []

    while timer() < endtime:
        if msvcrt.kbhit():  # For Windows
            # Handle keyboard input
        else:  # For Unix
            ready, _, _ = select.select([sys.stdin], [], [], timeout)
            if ready:
                return sys.stdin.readline().rstrip('\n')

    raise TimeoutExpired()

신호 처리 접근 방식(Unix 계열) 시스템)

import signal

def alarm_handler(signum, frame):
    raise TimeoutExpired()

def input_with_timeout(prompt, timeout):
    signal.signal(signal.SIGALRM, alarm_handler)
    signal.alarm(timeout)

    try:
        return input(prompt)
    finally:
        signal.alarm(0)  # Cancel the alarm

운영 체제 및 차단 요구 사항에 가장 적합한 접근 방식을 선택하세요.

위 내용은 Python에서 시간 제한이 있는 사용자 입력을 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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