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 :

Thread ne s'arrête pas quand il a fini son traitement [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Par défaut Thread ne s'arrête pas quand il a fini son traitement
    Bonjour,

    J'ai un programme qui lance un thread qui doit effectuer un traitement. Une fois le traitement terminé, je souhaite que le thread s'arrête, puis le relancé à nouveau plus tard.
    J'ai fait une représentation simple de ce que fait mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    from threading import Thread, Event
    import time
     
    class MonThread(Thread):
        def __init__(self):
            Thread.__init__(self)
            self._stopevent = Event()
     
        def run(self):
            print("Ligne 1")
            self._stopevent.wait(1)
            print("Ligne 2")
     
    thr = MonThread()
    thr.start()
    time.sleep(0.5)
    print("Thread alive : {}".format(thr.is_alive()))
    time.sleep(1)
    print("Thread alive : {}".format(thr.is_alive()))
    if not thr.is_alive():
        thr.start()
    Le code suivant me donne la sortie console suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Ligne 1
    Thread alive : True
    Ligne 2
    Thread alive : False
    Traceback (most recent call last):
      File "D:/Profiles/flebaillif/Alarme/testThread.py", line 21, in <module>
        thr.start()
      File "C:\Program Files (x86)\Python\Python36-32\lib\threading.py", line 842, in start
        raise RuntimeError("threads can only be started once")
    RuntimeError: threads can only be started once
    Je ne comprends pas pourquoi je ne peux pas relancer un thread terminé, et du coup comment faire.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Salut,

    Citation Envoyé par FabViking Voir le message
    Je ne comprends pas pourquoi je ne peux pas relancer un thread terminé, et du coup comment faire.
    Pour faire simple: c'est comme çà que çà fonctionne et il faut apprendre à faire avec.... sauf à lire les internals d'un OS comme Linux qui vous explique comment fonctionnent les threads.
    Et si c'est comme çà, vous avez juste comme option de créer un nouveau thread ou le mettre en "pause" pour le redémarrer plus tard (plutôt que "terminer").

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

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Par défaut
    Effectivement, je ne comprenais pas correctement le message d'erreur.
    Je comprenais que je ne pouvais pas lancer un thread déjà lancé, mais la compréhension est plus simple encore.

    Dans tous les cas, un thread est "jetable", utilisable qu'une seule fois. Il se termine, et on en créé un autre pour refaire le travail.

    Merci à toi pour ta réponse.

    Fabien

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 26/02/2016, 11h53
  2. [XL-2013] vbA ma macro s'arrête pas quand je la lance
    Par patbalotelli dans le forum Excel
    Réponses: 6
    Dernier message: 24/11/2015, 09h25
  3. Réponses: 2
    Dernier message: 17/03/2010, 21h32
  4. Réponses: 1
    Dernier message: 07/05/2007, 10h13
  5. Réponses: 2
    Dernier message: 30/11/2006, 14h51

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