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 :

créer une tempo [Fait]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut créer une tempo
    Bonjour,
    j'amerais pouvoir créer une temporisation sous python.
    C'est à dire que si mon programme n'a pas fini de s'éxecuter dans les 30 secondes suivantes j'aimerais qu'il s'arrete et/ou qu'il renvoye une valeur.
    Est ce que c'est possible ???

    J'ai trouver comment utiliser time.sleep(...), mais ca ne me convient pas, est ce que quelqun à une solution???

    Merci de votre aide

  2. #2
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Par défaut Peut etre
    Je sais qu'avec tkinter on peux utiliser la balise after()
    Mais je sais pas si c'est ce que tu cherche.

  3. #3
    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
    Il faut utiliser les threads

    Une solution
    Tu lances ta fonction dans un thread en créant un attribut à True tant que la fonction est en cours et passant à False lorsqu'elle se finit.

    Ensuite, avec un Timer, au bout d'un certain temps, tu testes cet attribut et tu tues le thread si la fonction est toujours en cours

    Quelques liens dans la FAQ devrait t'aider:
    http://python.developpez.com/faq/?page=Thread


    voilà un exempe tout laid (la fonction étant stoppé au bout de 5 secondes (dans tous les cas vu qu'elle tourne à l'infini) mais tu adapetras facilment à ton problème
    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
     
    def toto():
        toto.i = 0
        while True:
            toto.i += 1
        toto.encours = False
     
     
    toto.encours = True
     
    a = threading.Thread(None, toto)
    a.start()
     
     
    def stop():
        if toto.encours: a._Thread__stop()
        print toto.i
    threading.Timer(5.0, stop).start()

  4. #4
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut
    Je recommence je l'ai posté sans avoir fini

    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
    def fctprincipal():
        fctprincipal.encours = False
        f = open ('C:\\temp\\initmaat.TXT')                     #ouverture de fichier initmaat.txt
        l = list (f)
        m = l[0]
    .........
    .........
    .........
     
        z.write(val)
        z.close()
        fctprincipal.encours = True
     
     
    def timer():
        if (fctprincipal.encours == False):
            time.sleep (20)
     
     
    a = threading.Thread(None, fctprincipal)
    a.start()
    b = threading.Thread(None, timer)
    b.start

  5. #5
    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
    Plutôt comme ceci:
    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
    def fctprincipal():
        fctprincipal.encours = True
        f = open ('C:\\temp\\initmaat.TXT')                     #ouverture de fichier initmaat.txt
        l = list (f)
        m = l[0]
    .........
    .........
    .........
     
        z.write(val)
        z.close()
        fctprincipal.encours = False
     
     
     
    a = threading.Thread(None, fctprincipal)
    a.start()
    def timer():
        if (fctprincipal.encours): a._Thread_stop()
     
    b = threading.Timer(20.0, timer) ## La fonction timer est executé au bout de 20 secondes
    b.start

  6. #6
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut
    J'ai un probleme d'execution du programme

    windows m'affiche un message d'erreur au lancement du programme comme quoi python a rencontré un probleme et doit fermé, du coup je peu pas tester mon programme.

    Est ce que cela pourrait etre du au fait que j'ai trop de ligne de code dans ma fctprincipal() (250 lignes).

    Merci

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

Discussions similaires

  1. [Crystal Report 8] créer une source de données oracle
    Par Lina dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 14/11/2002, 13h53
  2. [Réseau] Créer une connexion Internet
    Par Tranber dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 17/10/2002, 17h01
  3. créer une arborescence windows sous forme d'arbre java
    Par chupachoc dans le forum Composants
    Réponses: 3
    Dernier message: 01/10/2002, 16h48
  4. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46
  5. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20

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