Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich ein Timeout für Benutzereingaben in Python implementieren?

Wie kann ich ein Timeout für Benutzereingaben in Python implementieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-15 13:30:02334Durchsuche

How Can I Implement a Timeout for User Input in Python?

Timeout für Benutzereingaben in Python

In Python fordert die Funktion raw_input() den Benutzer zur Eingabe auf, wartet jedoch unbegrenzt, bis der Benutzer etwas eingibt. Für Situationen, in denen Sie eine Zeitbegrenzung für Benutzereingaben festlegen müssen, ist eine Lösung mit dem Threading-Modul verfügbar.

Die von einem Benutzer vorgeschlagene Funktion raw_input_with_timeout() benötigt zwei Argumente: prompt (der angezeigte Text). an den Benutzer) und Timeout (das Zeitlimit in Sekunden). Es startet einen Timer-Thread, der den Haupt-Thread nach dem angegebenen Timeout unterbricht.

Hier ist eine verbesserte Version des Codes:

import threading

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

Wenn der Benutzer vor dem Timeout eine Eingabe macht, wird die Eingabe wird als String zurückgegeben. Wenn das Zeitlimit erreicht ist, wird None zurückgegeben, um anzuzeigen, dass der Benutzer innerhalb des angegebenen Zeitrahmens keine Eingabe vorgenommen hat.

Beachten Sie, dass bei dieser Lösung davon ausgegangen wird, dass der Benutzer nicht sehr langsam tippt. Wenn Sie langsames Tippen berücksichtigen müssen, können Sie „finishat“ (die Zeit, zu der die Zeitüberschreitung auftritt) nach jeder Zeicheneingabe neu berechnen.

Das obige ist der detaillierte Inhalt vonWie kann ich ein Timeout für Benutzereingaben in Python implementieren?. 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