Maison > développement back-end > Tutoriel Python > Comment puis-je obtenir une saisie clavier asynchrone avec un délai d'attente en Python ?

Comment puis-je obtenir une saisie clavier asynchrone avec un délai d'attente en Python ?

Mary-Kate Olsen
Libérer: 2024-12-28 09:58:11
original
631 Les gens l'ont consulté

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

Saisie clavier asynchrone avec gestion des délais d'attente

La tâche à accomplir est de solliciter la saisie de l'utilisateur tout en imposant un délai d'attente pour éviter une attente indéfinie. Bien que Google suggère un fil de discussion à cet effet, il peut ne pas donner de résultats satisfaisants.

Le défi vient du fait que la fonction de saisie du système ([raw_]input) accepte au plus un argument. Cependant, pour implémenter un timeout, il faut passer un paramètre timeout. Cela entraîne une TypeError.

Solution utilisant Select Poll

Une solution plus fiable consiste à utiliser l'appel système 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!")
Copier après la connexion

Répartition

  • select.select() registres sys.stdin pour l'interrogation des entrées avec un délai d'attente de 10 secondes.
  • La variable i contient une liste de descripteurs de fichiers prêts à être saisis, indiquant s'il y a eu une entrée de l'utilisateur.
  • Si l'entrée est présente, la méthode readline() est utilisée pour le récupérer.
  • Si le délai d'attente expire sans saisie, le message "Vous n'avez rien dit !" Le message s'affiche.

Cette approche offre une plus grande portabilité et efficacité dans la gestion de la saisie au clavier avec une fonctionnalité de délai d'attente.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal