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ès t ms,

  • après t ms le programme actuel s’interrompt pour exécuter la fonction f(),

  • le module time met à disposition des fonctions de date et de temps.

Question

La méthode ontimer() installe une fonction de rappel qui




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ée

  • 1 - tm_mon - mois

  • 2 - tm_day - jour

  • 3 - tm_hour - heur

  • 4 - tm_min - minute

  • 5 - tm_sec - seconde

  • 6 - tm_wday - jour de la semaine

  • 7 - 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.