>백엔드 개발 >파이썬 튜토리얼 >Python에서 시간 제한이 있는 비동기 키보드 입력을 어떻게 얻을 수 있습니까?

Python에서 시간 제한이 있는 비동기 키보드 입력을 어떻게 얻을 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-28 09:58:11679검색

How Can I Get Asynchronous Keyboard Input with a Timeout in Python?

시간 초과 처리 기능이 있는 비동기 키보드 입력

현재 작업은 무기한 대기를 방지하기 위해 시간 초과를 부과하는 동시에 사용자 입력을 요청하는 것입니다. Google에서는 이에 대한 메일링 스레드를 제안하지만 만족스러운 결과를 얻지 못할 수도 있습니다.

문제는 최대 하나의 인수를 허용하는 시스템 입력 함수([raw_]input)에서 발생합니다. 그러나 시간 초과를 구현하려면 시간 초과 매개변수를 전달해야 합니다. 이로 인해 TypeError가 발생합니다.

Select Poll을 사용한 솔루션

더 안정적인 솔루션은 select.select() 시스템을 사용하는 것입니다. call:

import sys, select

print("You have ten seconds to answer!")

i, o, e = select.select([sys.stdin], [], [], 10)

if (i):
    print("You said", sys.stdin.readline().strip())
else:
    print("You said nothing!")

Breakdown

  • select.select()는 10초의 제한 시간으로 입력 폴링을 위해 sys.stdin을 등록합니다.
  • i 변수에는 사용자가 있는지 여부를 나타내는 입력 가능 파일 설명자 목록이 포함되어 있습니다. 입력.
  • 입력이 있는 경우 readline() 메서드를 사용하여 입력을 검색합니다.
  • 입력 없이 시간 초과가 만료되면 "당신은 아무 말도 하지 않았습니다!" 메시지가 표시됩니다.

이 접근 방식은 시간 초과 기능을 통해 키보드 입력을 처리할 때 더 큰 이동성과 효율성을 제공합니다.

위 내용은 Python에서 시간 제한이 있는 비동기 키보드 입력을 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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