HOWTO · Python
Programme Pause en Python
Ce tutoriel explique comment mettre en pause un programme en Python
Sur cette page
Pour mettre en pause un programme Python, choisissez le comportement souhaité : utilisez time.sleep() pour attendre une durée donnée, input() pour attendre une personne dans une console, ou threading lorsqu’un thread doit attendre tandis qu’un autre continue son travail. Une commande de pause du shell est disponible uniquement dans une console Windows et n’est pas portable.
Mettre en pause pendant une durée fixe avec time.sleep()
Importez le module time et appelez time.sleep(seconds) pour suspendre le thread appelant pendant la durée demandée, exprimée en secondes. Une fois l’attente terminée, l’exécution reprend à l’instruction suivante.
Exécutez cet exemple :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import time
print("Starting a short pause.")
time.sleep(0.1)
print("The program continues.")
La durée demandée ne constitue pas une garantie de précision. Le système d’exploitation peut reprendre le thread plus tard que prévu : cette fonction convient donc aux délais, et non à une planification précise. Pendant qu’un thread est en pause, il ne peut pas effectuer son propre travail, mais les autres threads peuvent continuer à s’exécuter.
Mettre en pause en attendant une saisie avec input()
Utilisez input() lorsqu’un programme en console doit attendre une personne. La fonction affiche une invite facultative, lit une ligne et renvoie le texte saisi. L’appeler sans affecter sa valeur de retour est utile lorsqu’une réponse quelconque, par exemple la touche Entrée, doit permettre au programme de continuer. Les exemples ci-dessous gèrent la fin de fichier afin de se terminer proprement même lorsqu’ils sont lancés sans console interactive.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
try:
input("Press Enter to continue: ")
except EOFError:
pass
Si la réponse est utile au programme, stockez la chaîne renvoyée et utilisez-la. Cet exemple gère également la fin de fichier, qui peut se produire lorsque l’entrée est redirigée ou qu’aucune saisie console n’est disponible.
try:
name = input("Your name: ")
except EOFError:
name = "guest"
print(f"Hello, {name}.")
input() attend une ligne saisie dans la console ; cette fonction ne permet pas de mettre en pause de manière générale un service en arrière-plan ou la boucle d’événements d’une application graphique.
Créer une fonction réutilisable pour une pause temporisée
Pour effectuer des pauses répétées, placez l’appel dans une petite fonction utilitaire. Importez time dans le même script et transmettez le nombre de secondes souhaité à chaque appel.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import time
def pause_for(seconds):
time.sleep(seconds)
pause_for(0.1)
print("Ready.")
Cette fonction utilitaire raccourcit les appels tout en conservant le comportement de time.sleep() : elle suspend le thread qui l’appelle. N’ajoutez une validation ou une journalisation que si le programme concerné en a besoin.
Mettre un thread en pause pendant que les autres poursuivent leur travail
Un appel à sleep dans une fonction exécutée par un thread de travail suspend ce thread, et non tous les threads du processus. Le thread principal peut effectuer d’autres tâches pendant ce délai. Un appel à join() attend ensuite la fin de ce thread de travail ; il ne met pas le processus en pause et n’arrête pas les threads sans rapport avec lui.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import threading
import time
def worker():
time.sleep(0.1)
print("Worker finished.")
thread = threading.Thread(target=worker)
thread.start()
print("Main thread continues.")
thread.join()
print("Worker has been joined.")
Utilisez la coordination entre threads lorsqu’une autre partie du programme doit attendre la fin d’un travail. Pour une attente de coordination sans durée déterminée, utilisez un mécanisme de synchronisation tel qu’un événement plutôt qu’un long délai arbitraire avec sleep ; une pause ne vérifie à nouveau la situation qu’après le délai choisi.
Utiliser os.system(“pause”) uniquement dans une console Windows
Sous Windows, os.system("pause") demande à l’interpréteur de commandes d’exécuter sa commande pause. Cette solution dépend d’une console Windows et d’un shell externe ; elle ne convient donc pas à une pause Python portable et peut ne pas se comporter comme prévu si aucune console n’est attachée. Préférez input() pour afficher une invite dans une console, ou un mécanisme de synchronisation de threads pour coordonner le travail. Cet appel propre à une plateforme est présenté dans le texte, car il ne peut pas être exécuté dans tous les environnements.
Choisir la méthode de pause adaptée
- Utilisez
time.sleep(seconds)lorsque le programme doit attendre pendant une durée déterminée. - Utilisez
input()lorsqu’une personne doit décider quand un programme en console reprend. - Utilisez les mécanismes de synchronisation de
threadinglorsqu’un thread doit attendre un autre thread ou un signal. - Réservez
os.system("pause")aux scripts exécutés dans une console Windows qui ont spécifiquement besoin de cette commande du shell.
Ces méthodes ne mettent pas la même chose en pause : un délai temporisé suspend le thread appelant, la saisie console attend une ligne fournie par une personne et la synchronisation attend qu’une autre partie d’un programme concurrent intervienne. Choisissez en fonction de ce qui doit reprendre et de la nécessité de faire fonctionner le programme sur plusieurs plateformes.