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 :

mettre un thread en pause


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Par défaut mettre un thread en pause
    bonjour,
    j'ai un thread qui execute plusieurs instructions.j'aimerais bien faire une pause et reprendre mon thread de là ou je me suis arrêté.pour ce faire,je dois implémenter 2 fonctions:une methode qui met mon thread en pause tout en sauvegardant le contexte et une autre play qui load mon thread et continue son execution de là ou je me suis arrêté la dernière fois.
    j'ai tellement cherché mais j'ai pas trouvé la solution.j'ai essayé avec les threading.event ça marche pas non plus.
    svp si quequ'un pourrais m'aider..
    merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Par défaut
    Bonjour,

    je me dis que tu peux peut etre mettre un peu de code qui ressemble à ca au bon endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [blablabla]
    while maConditionDodo:
      time.sleep(maDuree)
    [blablabla]

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Dans la mesure ou le travail du thread se trouve dans une boucle, voilà un exemple de ce qu'on pourrait faire pour la pause avec time.sleep()(Python 2.7):

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    import threading
    import time
     
    ##############################################################################
    class Monthread(threading.Thread):
     
        def __init__(self):
            threading.Thread.__init__(self)
            self.encore = True # =variable pour arrêter le thread sur demande
            self.enpause = False # variable pour mettre le thread en pause
     
            self.c = 0 # simple compteur pour affichage
     
        def run(self):
     
            while self.encore:
     
                while self.enpause:
                    time.sleep(0.5)
     
                # activité du thread
                # ...
                self.c += 1
                print self.c
                # ...
     
        def pause(self):
            self.enpause = True
     
        def reprise(self):
            self.enpause = False
     
        def stop(self):
            self.encore = False
     
    ##############################################################################
     
    app=Monthread()
    app.start()
     
    print u"thread lancé"
     
    tps = time.time()
     
    while app.isAlive():
        if time.time()-tps > 1: # pause du thread au bout de 1 secondes
            app.pause()
            print u"thread en pause"
            break
     
    while app.isAlive():
        if time.time()-tps > 2: # reprise du thread au bout de 2 secondes
            print u"reprise du thread"
            app.reprise()
            break 
     
    while app.isAlive():
        if time.time()-tps > 3: # arrêt du thread au bout de 3 secondes
            app.stop() 
            print u"arrêt du thread"
            break
     
    print "fin"

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    je crois que le PO veut stopper le thread pour le reprendre à la prochaine exécution du code.

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Par défaut
    Citation Envoyé par josmiley Voir le message
    je crois que le PO veut stopper le thread pour le reprendre à la prochaine exécution du code.
    oui je conte faire ça.mais le problème comment procéder pour le faire

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bizarre, j'avais cru répondre à la question: un thread actif qu'on met en pause et qu'on fait reprendre à la demande.

    En quoi la solution proposée ne convient pas?

Discussions similaires

  1. Mettre le thread GUI en pause
    Par luffydu22 dans le forum Multithreading
    Réponses: 0
    Dernier message: 26/12/2010, 13h41
  2. Mettre un thread en pause!
    Par Voldo dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 29/03/2008, 18h29
  3. Ou mettre le thread ?
    Par Nemesis007 dans le forum Threads & Processus
    Réponses: 26
    Dernier message: 18/02/2007, 15h18
  4. Mettre un SDL_Thread sur pause ?
    Par Franck.H dans le forum SDL
    Réponses: 6
    Dernier message: 14/12/2006, 14h44
  5. mettre un programme en pause
    Par jobherzt dans le forum C++
    Réponses: 16
    Dernier message: 13/07/2006, 20h38

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