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] comment l'arreter? [Fait]


Sujet :

Python

Vue hybride

duplo [thread] comment l'arreter? 21/09/2006, 22h46
Guigui_ A priori, il n'y a pas de... 21/09/2006, 23h03
Wormus Bon je suis un peu en retard... 16/10/2006, 03h45
Guigui_ Effectivement ;) Bizarre... 16/10/2006, 08h34
Wormus Hein déconseillé ! :roll: Ah... 16/10/2006, 13h54
Guigui_ Je ne sais pas comment... 16/10/2006, 20h07
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de duplo
    Inscrit en
    Octobre 2004
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Octobre 2004
    Messages : 294
    Par défaut [thread] comment l'arreter?
    Bonjour !

    j'ai un probleme pour stoper un thread
    j'ai fait des recherche tout d'abord dans le module threading et j'ai vu qu'il existais un fonction __stop() dans la classe Thread mais celle ci ne fonctionne pas j'obtient un message comme quoi cette fonction n'existe pas !

    ensuite je suis venu rechercher sur ce forum et d'apres ce que j'ai compris ceci devrais correctement fonctionner :

    import threading
    th = threading.Thread()
    th.start()
    th.stop()
    ce qui me donne :
    Traceback (most recent call last):
    File "<stdin>", line 1, in ?
    AttributeError: 'Thread' object has no attribute 'stop'
    comment cela ce fait 'il???


    Merci d'avance


    ++

  2. #2
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    A priori, il n'y a pas de fonction pour stopper un thread.
    Une possibilité est de créer un attribut booléan qui donne l'état de ton thread puis de rajouter une fonction stop() qui modifie l'état de ton thread. Sinon, il y a d'autres façons (une recherche sur le mot "Thread" te donnera quelques sujets qui en parle).

    Voici un exemple (pas très propre)

    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
    import threading
    import time
    boolcontinue = True
    i=0
    def main():
        global i
        global boolcontinue
        while boolcontinue:
            print i
            i += 1
    def stop():
        global boolcontinue
        boolcontinue = False
    th = threading.Thread(None, main, None, ())
    th.start()
     
    time.sleep(1)
     
    stop()

  3. #3
    Membre très actif
    Avatar de Wormus
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Par défaut
    Bon je suis un peu en retard mais bon au pire ça pourra servir à d'autre !!

    Il y a une méthode qui permet de stopper le Thread (et plus facilement que le suggère GuiGui ^^)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monThread.start()
    monThread._Thread__stop()

  4. #4
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Effectivement
    Bizarre que cette fonction ne m'est pas sauté au yeux à moins peut-être avoir lu que c'était déconseillé d'utiliser cette fonction. Enfin, il faudra que je me renseigne à nouveau.

  5. #5
    Membre très actif
    Avatar de Wormus
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Par défaut
    Hein déconseillé ! Ah ba tant pis !!
    je l'utilise quand même

  6. #6
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Je ne sais pas comment fonctionne cette fonction (et je n'ai pas trouvé de documentation dessus où d'exemples concrets (de personnes sûres)). A mon avis, l'utilisation de cette fonction dépend du contenu du thread car cette fonction a l'air de killer le thread brutalement sans aucune maîtrise de son arrêt. Ainsi, si le thread est lié à d'autres, il peut être parfois préférable d'arrêter le thread proprement (à la manière que je l'ai proposé).
    Enfin, cela ne reste que supposition.

    En tout cas, dans le livre "Python Cookbook 2nd Edition", il y a justement une recette sur la terminaison d'un thread et il n'utilise pas la fonction _Thread__stop mais la classe threading.Event( ) et la fonction join
    La méthode join peut être utile lors d'accès concurrent à des ressources.

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

Discussions similaires

  1. [Thread]Comment créer plusieurs thread à la demande??
    Par Devil666 dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 14/09/2005, 13h29
  2. [Thread] comment attendre la fin d'un thread?
    Par billynirvana dans le forum Concurrence et multi-thread
    Réponses: 11
    Dernier message: 24/08/2005, 10h43
  3. [Threads] Comment terminer un thread ?
    Par Wookai dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 16/04/2005, 13h25
  4. [Thread] comment arreter un thread qui execute une methode b
    Par Cyber@l dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 04/08/2004, 10h51
  5. [Threads]Comment les organiser pour un jeu du serpent ?
    Par Pill_S dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 11/05/2004, 15h22

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