6. Interrompre - ontimer()
¶
Dans ce chapitre nous allons voir comment un programme peut planifier d’appeler une fonction dans le futur. Cette fonctionnalité est importante pour programmer des simulations, des animations, des jeux vidéos, des horloges, etc. Nous allons voir que :
la fonction
ontimer(f, t)
installe une fonction qui va être appelée aprèst
ms,après
t
ms le programme actuel s’interrompt pour exécuter la fonctionf()
,le module
time
met à disposition des fonctions de date et de temps.
6.1. Fonction de rappel¶
En informatique, une fonction de rappel (callback en anglais) ou fonction de post-traitement est une fonction qui est passée en argument à une autre fonction. Cette dernière peut alors faire usage de cette fonction de rappel comme de n’importe quelle autre fonction, alors qu’elle ne la connaît pas par avance.
6.2. Fonction ontimer
¶
La fonction ontimer(f, t)
permet d’appeler une fonction dans le futur, après t
millisecondes. Nous l’utilisons dans l’exemple suivant pour afficher pendant 60 secondes un point qui fait le tour du cadran d’une horloge.
6.3. Le module time
¶
Le module time
comporte 17 méthodes et attributs.
6.4. Méthodes¶
L’epoch est le point de départ du temps et dépend de la plateforme. Pour Unix l’epoch est le 1. janvier 1970.
timezone()
renvoie le décalage horaire (exprimé en secondes)time()
renvoie le nombre de secondes depuis l’époque (1970),asctime()
renvoie le temps et la date sous forme de chaîne de texte.
6.5. Structure temps¶
La fonction gmtime()
renvoie une séquence de valeurs temporelles. Ses valeurs sont accessibles par index et par nom d’attribut. Voici les index, les attributs et leur signification :
0 -
tm_year
- année1 -
tm_mon
- mois2 -
tm_day
- jour3 -
tm_hour
- heur4 -
tm_min
- minute5 -
tm_sec
- seconde6 -
tm_wday
- jour de la semaine7 -
tm_yday
- jour de l’année
6.6. Date et temps¶
La fonction asctime()
retourne une chaine avec date et temps. Nous pouvons la découper avec l’opérateur de tranche.
Une tortue peut écrire temps et date en grandes lettre sur le canevas.
6.7. Horloge automatique¶
La fonction horloge()
affiche le temps et la date.
Comme dernière instruction nous installons une fonction de rappel, cette même fonction, qui sera appelée de nouveau dans 1000 ms.
6.8. Chronométrer¶
Pour avoir une idée du temps d’exécutions d’une itération, nous mesurons le temps pour n
itérations et nous calculons la durée d’une itération en microsecondes (um).
Prudence
Sur ce site votre code Python est traduit en JavaScript et exécuté par Skulpt directement dans votre navigateur. Une instruction de base prend environ 10 µs.
Si vous téléchargez le fichier et exécutez votre code directement en Python avec un éditeur externe comme Thonny, les instructions de base exécutent 100 fois plus vite (environ 0.1 µs). Par contre pour ce qui concerne l’affichage, les vitesses sont très comparables, ce que vous pouvez constater dans l’exemple suivant.
6.9. Vitesse d’affichage¶
Nous allons mesurer le temps nécessaire pour écrire 600 pixels sur tout l’écran.
Exercice 1
Diminuez le diamètre d
des pixels à 5.
6.10. Horloge¶
6.11. Exercice¶
Tetris¶
Les flèches gauche/droite permettent de déplacer le tétronimo. Programmez les touches :
haut/bas pour le tourner,
espace pour le faire tomber.