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

Python Discussion :

Sleep en python


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Par défaut Sleep en python
    Bonjour,

    j'ai actuellement un programme qui affiche des données graphiques (via matplotlib)
    Ces données sont réactualisées toutes les secondes.
    J'ai donc quelque chose de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while 1:
        getData()
        showData()
        sleep(1.0)
    Mais le problème, c'est que le sleep libere le cpu pour 1 secondes.
    Donc toute interaction avec mon graphique est impossible ...
    Ce que je veux, c'est recommencer la boucle dans 1 secondes, et en attendant, pouvoir "toucher" au graphique.

    Il y a une solution?

    ps : j'ai essayé les threads, mais je me retrouve avec une drôle d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RuntimeError: main thread is not in main loop

  2. #2
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    sans parler de thread, il te suffit d'importer le module time et de faire time.sleep(1)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Par défaut
    Oui c'est ce que j'ai expliqué.

    Quand je fais un sleep(1.0) ou time.sleep(1.0) si tu préfére, ça me bloque mon programme d'affichage ...

  4. #4
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    ahhh, ok sorry... ch'uis un peu long à la détente... oui effectivement la meilleure soluce est d'utiliser un thread, mais sans sleep , je crois qu'il est expliquer dans la faq comment faire un "thread timer" (en tous cas c'est comma ça que j'appelle ce truc...

    EDIT : arf, j'ai vraiment du mal... pour l'erreur, désolé, j'lai jamais rencontrée

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Par défaut
    Apparemment, je peux oublier les threads, j'ai toujours la même erreur, même en utilisant la class timer ...

    Je pense que c'est parce que matplotlib lance lui même un thread. C'est peut être pour cela que que mes threads me génèrent des erreurs...
    Peut-être qu'en thread ne peux pas lancer de thread

  6. #6
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Normalement, tu peux en lancer plusieurs en même temps, regarde dans matplotlib le nom du thread voir si c'est pas le même que t'utilise, ou peut-être que c'est une histoire de group a assigner lors de la création du thread... bon je m'arrête là car ça dépasses mes compétences

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    Je ne connais pas matplotlib mais ça ressemble au problème classique d'appeler une fonction GUI depuis un thread que l'on crée. En gros, les evenements et les interactions avec l'interface graphique doivent être faites depuis un thread particulier (mainloop), dans laquelle on se trouve jusqu'à ce qu'on crée un autre thread.

    Je ne vois pas comment tu pourrais faire ce que tu veux sans créer un thread. Sous wxpython, la solution est, depuis le thread qui fait sleep, d'appeler la méthode showData avec wx.CallAfter: cela a pour effet de demander a la mainloop d'executer la fonction passée en paramètre de CallAfter. Sous matplotlib, je ne sais pas.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Par défaut
    Citation Envoyé par Fructidor Voir le message
    Je ne connais pas matplotlib mais ça ressemble au problème classique d'appeler une fonction GUI depuis un thread que l'on crée. En gros, les evenements et les interactions avec l'interface graphique doivent être faites depuis un thread particulier (mainloop), dans laquelle on se trouve jusqu'à ce qu'on crée un autre thread.
    C'est exactement ça !

    Je crois que ce que je veux faire ne sera pas possible avec matplotlib.
    pfouuu

Discussions similaires

  1. Equivalent à sleep en python
    Par breakwall dans le forum Général Python
    Réponses: 3
    Dernier message: 09/10/2008, 15h28
  2. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  3. module .so pour python... ?!
    Par totoetlititi dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/03/2004, 14h51
  4. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59
  5. [langage] fonction sleep + probleme fenetre dos
    Par yokito dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2003, 19h46

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