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 :

Module Threading, utilisation timer(x,y) . [Fait]


Sujet :

Python

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Module Threading, utilisation timer(x,y) .
    Salut,

    je veux faire une boucle avec un test de presence fichier ou requete SQL + action tout les intervales T.
    Le bout de code me renvoi une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import threading
    t=''
    def hello():
          print "hello, world"
    t = threading.Timer(5.0, hello)
    nb=10
    i=0
    for i in range(nb):
                    t.start()
                    t.cancel()
    ------------------------------
    D:\Scripts>timer.py
    Traceback (most recent call last):
    File "D:\Scripts\Timer.py", line 10, in ?
    t.start()
    File "C:\Python23\lib\threading.py", line 404, in start
    assert not self.__started, "thread already started"
    AssertionError: thread already started
    Si je fais :
    t.isAlive()
    j'ai False comme retour ?

    Quelqu'un peut-il m'aider ?
    Merci.

    Alain.

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Points : 137
    Points
    137
    Par défaut
    Un thread ne peut être starté qu'une seule fois:
    http://docs.python.org/lib/thread-objects.html
    start( )
    Start the thread's activity.
    This must be called at most once per thread object.
    Tu peux essayer quelque chose comme çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import threading
    def hello():
      print "hello, world"
    nb=10
    for i in range(nb):
      t = threading.Timer(5.0, hello)
      t.start()
      while t.isAlive(): pass
      del t

  3. #3
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    Salut,

    ca m interesse

    je cherche a faire s executer une fonction toute les 30 seconds pour une appli reseau,

    l appli doit appeller une page php en ligne a un intervalle de temps regulier ( 30 secondes)

    quelle est la meilleur methode pour faire ca

    j avais créer 2 thread dont un fesait un sleep de 30 secondes mais ca ramait a cause du thread qui sleepait dans le vide

    ensuite j ai regardé threading.Timer

    mais la fonction est appelé une seule fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    def RefreshServerList(name):
            urllib.urlopen("http://theurl.com/krazy_serv.php?name=" + name + "&cd=12348" )
            print "called"
     
    t = threading.Timer(30.0,RefreshServerList,(server_name,) )
    t.start()
    est il possible de faire un threading.Timer qui appelle une fonction tout les temps T en boucle ?


    [EDIT]
    j ai trouvé pourquoi ca ramait , j avais mis un asyncore.loop() dans un thread et comme tu meme contient des threads ca ramait un peu mais je voudrais savoir maintenant si c possible de controler la priorité des threads ??

    [/EDIT]

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 121
    Points : 127
    Points
    127
    Par défaut
    VOus pouvez ptet faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import time
     
    nb=10
    i=0
    for i in range(nb):
        time.sleep(30)
        #l'action à faire
    => FAQ: http://python.developpez.com/faq/?pa...ad#ThreadTimer

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2009, 08h33
  2. thread ou timer ou ?
    Par ziz2005 dans le forum MFC
    Réponses: 2
    Dernier message: 19/11/2006, 09h54
  3. [swing] Probleme de thread avec Timer
    Par issou dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 13/05/2006, 22h52
  4. [MFC] Thread et timer
    Par r0d dans le forum MFC
    Réponses: 2
    Dernier message: 18/04/2005, 13h03
  5. [Astuce][Thread]Utilisation des blocs synchronized
    Par Pill_S dans le forum Concurrence et multi-thread
    Réponses: 14
    Dernier message: 21/07/2004, 14h14

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