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
Freigeben: 2024-12-28 09:58:11
Original
686 Leute haben es durchsucht

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!")
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage