Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python eine asynchrone Tastatureingabe mit einem Timeout erhalten?

Wie kann ich in Python eine asynchrone Tastatureingabe mit einem Timeout erhalten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-28 09:58:11648Durchsuche

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

Asynchrone Tastatureingabe mit Timeout-Behandlung

Die vorliegende Aufgabe besteht darin, Benutzereingaben anzufordern und gleichzeitig ein Timeout festzulegen, um unbegrenztes Warten zu verhindern. Obwohl Google hierfür einen Mailing-Thread vorschlägt, liefert dieser möglicherweise keine zufriedenstellenden Ergebnisse.

Die Herausforderung ergibt sich daraus, dass die Systemeingabefunktion ([raw_]input) höchstens ein Argument akzeptiert. Um jedoch ein Timeout zu implementieren, muss ein Timeout-Parameter übergeben werden. Dies führt zu einem TypeError.

Lösung mit Select Poll

Eine zuverlässigere Lösung ist die Verwendung des Systemaufrufs select.select():

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!")

Aufschlüsselung

  • select.select() registriert sys.stdin für Eingabeabfragen mit einem Timeout von 10 Sekunden.
  • Die i-Variable enthält eine Liste eingabebereiter Dateideskriptoren, die angibt, ob eine Benutzereingabe erfolgt ist.
  • Wenn eine Eingabe vorhanden ist, wird die readline( )-Methode wird verwendet, um es abzurufen.
  • Wenn das Timeout ohne Eingabe abläuft, wird die Meldung „Sie haben nichts gesagt!“ angezeigt. Meldung wird angezeigt.

Dieser Ansatz bietet eine größere Portabilität und Effizienz bei der Verarbeitung von Tastatureingaben mit Timeout-Funktionalität.

Das obige ist der detaillierte Inhalt vonWie kann ich in Python eine asynchrone Tastatureingabe mit einem Timeout erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn