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 + timer


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut Thread + timer
    Bonjour,

    Après avoir lu ce tuto : http://python.developpez.com/faq/?page=Thread
    J'ai pu exécuter des morceaux de code dans des thread avec un timer.

    Si j'ai bien compris la class threading.timer n'accepte que des fonctions comme "target".
    Or je cherche à lancer des objets et des méthodes associées.
    Actuellement j'ai du donc faire une fonction pour chaque objet que je veux lancer via la class MyTimer.

    def fonction_1():
    Objclass1 = class1()
    Objclass1.methode

    def fonction_2():
    Objclass2 = class2()
    Objclass2.methode

    a = MyTimer(1.0, fonction_1)
    a.start()

    b = MyTimer(1.0, fonction_2)
    b.start()

    Etc .....

    Cependant j'aimerais savoir si il n'est pas possible d'utiliser les arguments que l'on peut passer à la fonction pour avoir une seule fonction capable d'appeler n'importe quel objet.
    J'ai déjà trouvé comment récupérer l'objet à partir des variables de la fonction puisque ceci fonctionne :
    def fonction(Obj):
    Objins = Obj
    Objins.methode

    a = MyTimer(1.0, fonction,[class1()])
    a.start()

    Cependant j'essaie désespérément de faire aussi passer la méthode et je n'y arrive pas, est ce possible ?

    Dans un monde parfait j'ai tenté ça :

    def fonction(Obj):
    Objins = Obj[0].
    Objins.Obj[1]

    a = MyTimer(1.0, fonction,[class1(),"methode()"])
    a.start()

    a = MyTimer(5.0, fonction,[class2(),"methode()"])
    a.start()

    Mais bien évidement ça ne fonctionne pas.
    Tout ça pour dire : Peut on passer dans les arguments d'une fonction un Obj et une de ses méthodes ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Imaginons que ta fonction prenne en argument une liste à 3 éléments:
    - l'objet
    - le nom de la méthode
    - la liste d'arguments à passer à la méthode

    Tu peux te servir de la fonction getattr pour récupérer la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def fonction(args):
        methode = getattr(args[0], args[1])
        return methode(*args[2])
    P.S.: Pense aux balises [code] la prochaine fois

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut
    Merçi beaucoup, ça fonctionne.

    Petit résumé pour ceux qui suivront:
    Comment appeler un objet avec la Class MyTimer(http://python.developpez.com/faq/?page=Thread)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    def Function_timer(args):
        methode = getattr(args[0], args[1])
        return methode(args[2])
     
    a = MyTimer(20.0, Function_timer,[Objet(),"Méthode",Arg_Méthode])
    a.start()

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

Discussions similaires

  1. parametre threading timer
    Par guenaule dans le forum Général Python
    Réponses: 22
    Dernier message: 08/08/2018, 17h40
  2. Exception in thread "Timer-x"
    Par nono44200 dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 14/08/2007, 19h24
  3. Thread + Timer CallBack
    Par crevygood dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/06/2007, 10h44
  4. Thread Timer et Tcomposant
    Par cfalcot dans le forum Delphi
    Réponses: 11
    Dernier message: 19/12/2006, 10h00
  5. [MFC] Problème de Threads + Timers
    Par Invité dans le forum MFC
    Réponses: 8
    Dernier message: 30/11/2005, 10h51

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