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 :

Communication avec thread


Sujet :

Python

  1. #1
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut Communication avec thread
    Bonsoir

    Je sais communiquer avec un thread via un event (les exemples ne manquent pas).

    J'ai lu la doc:
    http://docs.python.org/library/threading.html

    J'aimerais savoir comment enrichir la communication :
    • soit passer des paramètres à l'évènement
    • soit être capable de fournir plusieurs "events" différent à un thread: hélas il me semble que la fonction wait() ne permette d'attendre qu'un seul event à la fois (je ne compte pas faire des wait avec time-out).



    Merci

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Je ne vois pas ou est le problème.
    Pour passer des paramètres tu utilise des méthodes, voir à la limite tu modifie directement les variables de ton instance thread (merci self).
    Pour ce qui est de se que tu appelle event tu utilise des variables ou des instances threading.Event(), peut importe. Par contre oui, wait est lié à l'instance threading.Event(). Mais rien ne t'empêche d'en utiliser une comme flag (pour ton wait ou une boucle) et de la positionner lorsque tes conditions sont ok.

    Bon code

  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,

    En ce qui me concerne, j'utilise le plus souvent des verrous (Lock) qui permettent aux threads d'accéder à une ou plusieurs variables de manière fiable (http://python.jpvweb.com/mesrecettes...ion_par_thread). On arrive, par exemple, à simuler un 'tableau blanc' qui permet à un ensemble de threads de lire/écrire des informations mises en commun afin de simuler le fonctionnement d'un atelier, ou un jeu à plusieurs joueurs. Pour l'instant, ces mécanismes m'ont semblé suffisants: que cherches-tu à faire de plus?

    Sinon, les bibliothèques graphiques, de par leur principe (programmation par évènements), peuvent permettre des échanges plus élaborés par transmission de messages entre les threads (connect/emit de PyQt4 par exemple), le message pouvant d'ailleurs être accompagné par des données Python quelconques. Par exemple, un thread peut, en émettant un message avec le résultat d'un calcul, provoquer le lancement d'une méthode du programme principal pour exploitation de ce résultat. Par contre, ces threads ne peuvent pas, en général, contenir des instructions graphiques.

    Tyrtamos

  4. #4
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Je ne vois pas ou est le problème.
    En donnant des paramètres via une méthode, je désynchronise l'évent et ses paramètres.
    En d'autres termes, si j'émets 2 events simultanés en écrivant à chaque fois la valeur du paramètre, lors de la réception du premier event j'aurais le paramètre du second.

    Le tableau blanc de Tyrtamos semble répondre au besoin.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 687
    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 687
    Par défaut
    Salut,
    Regardez aussi les Queue qui sont un peu moins "basiques".
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  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
    Bonjour wiztricks,

    Citation Envoyé par wiztricks Voir le message
    Regardez aussi les Queue qui sont un peu moins "basiques".
    J'ai déjà tenté d'utiliser ce module queue, mais je le trouve très limité. Ou je n'ai pas trouvé comment l'utiliser. Par exemple:

    - peut-on lire une info sans la détruire?

    - peut-on lire/modifier/détruire une info à l'intérieur de la pile?

    Tyrtamos

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

    La fonction de base de ces objets est de construire un FIFO entre threads qui ressemblent à des pipes ou des mailboxes si on considère leurs équivalents OS.
    - et une grosse différence aussi puisque pas besoin de sérialiser dans ce cas -.

    Les fonctionnalités que tu souhaites:
    - peut-on lire une info sans la détruire?
    - peut-on lire/modifier/détruire une info à l'intérieur de la pile?
    sont supportées par collections.deque.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    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 wiztricks,

    Citation Envoyé par wiztricks Voir le message
    Les fonctionnalités que tu souhaites sont supportées par collections.deque.
    Merci. Je ne connaissais pas.

    Effectivement, collections.deque peut remplacer la pile FIFO que j'utilise dans mon tableau blanc. Et comme ça ne semble pas être codé en Python (je suppose en C), on doit gagner en rapidité. Mais il faut être sûr d'utiliser un Python récent: certaines méthodes ont été modifiées en v. 2.6 et d'autres sont arrivées avec la v 2.7.

    Tyrtamos

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

Discussions similaires

  1. Mutex avec la SDL pour communication main -> thread
    Par DakM dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 16/03/2012, 16h29
  2. Communication inter threads avec boost
    Par MikeLarson dans le forum C++
    Réponses: 17
    Dernier message: 03/02/2012, 15h28
  3. Réponses: 0
    Dernier message: 30/04/2009, 15h54
  4. [Débutant][Applet] Communication avec Servlet - IO Exception
    Par gandalf_le_blanc dans le forum Applets
    Réponses: 35
    Dernier message: 16/04/2004, 13h29
  5. [SSL]Communication avec un serveur en https
    Par menon dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 04/09/2003, 16h38

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