IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaçage autre langage Python Discussion :

Creation d'un chronometre performant [Python 3.X]


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2022
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Creation d'un chronometre performant
    Bonjour,

    J'ai besoin de créer un chronomètre précis au centième voire au millième sur python pour pouvoir l'afficher sur un label tkinter. Malheureusement avec le code ci dessous, le chronomètre se décale énormément en comparaison d'un normal. 5s / 30s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    def chronometre(chrono):
       if self.stop_chrono:
           self.Lb_compteur['text'] = '%.1f' %chrono
           fenetre_jeu.after(100, chronometre, float(chrono) + 0.1)
       else:
           chrono = 0
    Et quand je change 100 en 10 il n'y a aucune différence et 10 en 1 la différence se voit au début puis le chrono ralenti peu à peu.

    J'espère qu'il y a une explication simple à cela
    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par 59LOL59 Voir le message
    J'espère qu'il y a une explication simple à cela
    Ce n'est pas un environnement "temps réel". Les interruptions (soft) qui changent l'état d'un processus ne vont que rendre le processus éligible à s'exécuter sur un CPU lorsqu'il y en aura de libre et que les vraies interruptions ("hard": entrées sorties disques, réseau,... et autres évènements) ne préemptent pas son exécution.

    En plus, un langage comme Python est très loin de la machine: il faut exécuter beaucoup d'instructions (machine) pour arriver à exécuter une simple instruction (python). Vu tout ce qui peut arriver pendant ce temps là, impossible de garantir une précision inférieure à quelques dizaines de microsecondes.
    note: pour exécuter des instructions machines sans être interrompu, il faut bloquer les interruptions... Et se dépêcher car la machine à plein de boulot.

    Par contre, la machine contient une vraie horloge qui compte le temps en nanosecondes.... donc on peut regarder toutes les n millisecondes la différence entre un T0 initial et le T actuel. Ce devrait être un peu plus précis que d'accumuler l'imprécision de chaque mesure.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2022
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Probleme d'utilisation
    Bonjour,

    Je cherche depuis maintenant quelques jours sur internet mais je n'arrive pas à trouver comment utiliser cette fameuse horloge.
    Est-ce un module qu'il faut importer ou juste une commande ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par 59LOL59 Voir le message
    Est-ce un module qu'il faut importer ou juste une commande ?
    Il faut importer le module time et regarder du côté des fonctions time.time ou time.perf_counter.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2022
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Utilisation de time
    Merci beaucoup. Au final j'ai utilisé time.monotonic_ns().

    Juste dernière question. Dans la documentation, il y a des fonctions de time avec "Disponibilité : Unix." et je ne peux pas les utiliser sur Windows alors que j'ai une version normalement compatible de python.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par 59LOL59 Voir le message
    Dans la documentation, il y a des fonctions de time avec "Disponibilité : Unix." et je ne peux pas les utiliser sur Windows alors que j'ai une version normalement compatible de python.
    Vous ne devez pas confondre le langage Python et ses bibliothèques: vous avez des bibliothèques qui ne sont utilisables que sur Windows (winsound, par exemple), ou utilisables que sur Linux (par exemple, curses) et des mixtures comme time ou certaines fonctionnalités ne sont disponibles que sur Linux.

    => si vous voulez écrire une application "portable", il va falloir éviter d'utiliser ces fonctionnalités ou trouver des solutions "externes" aux bibliothèques "standards".

    Pour ce qui est de la bibliothèque time, n'oubliez pas que Python n'invente rien: ça met à disposition des fonctionnalités déjà offertes par l'environnement système qui vont aussi dépendre de ce qui existe dans le matériel... et qu'il serait aussi discutable de ne fournir que les fonctionnalités "portables".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Création de composant
    Par Tchetch dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/10/2002, 14h52
  2. [c++ builder] creation de surface sur TPanel
    Par JEG dans le forum DirectX
    Réponses: 7
    Dernier message: 23/09/2002, 22h41
  3. [Kylix] SIGSEGV 11 - creation form
    Par pram dans le forum EDI
    Réponses: 1
    Dernier message: 29/08/2002, 15h24
  4. Creation de fiche dynamique
    Par Mouss26 dans le forum C++Builder
    Réponses: 7
    Dernier message: 24/07/2002, 07h56
  5. Creation d une clee dans la registry en VC++
    Par rico27fr dans le forum MFC
    Réponses: 4
    Dernier message: 30/05/2002, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo