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 :

Python/Raspberry: Creation de thread à la volée


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Points : 33
    Points
    33
    Par défaut Python/Raspberry: Creation de thread à la volée
    Bonjour,
    je débute en python et en thread. J'ai créé un bout de code pour pouvoir lancer des threads de lecture des ports séries. C'est un code qui est censé être dupliqué sur plusieurs machines et dont le nombre de ports série ne sont pas connus à l'avance. Je laisse donc mon bout de code s'adapter au nombre de ports série référencés en /dev/ttyUSB*
    Pour chaque port qui correspond je lance un thread.
    Voici la partie interessante du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import sys
    import glob
     
    ports = glob.glob('/dev/tty[A-Za-z]*')
    for port in ports:
    	try:
    		if port.startswith('/dev/ttyUSB'):
    			thread = Traitement(port)
    			thread.start()
    			thread.join()
    Le soucis c'est que la méthode join(), indispensable dans mon application bloque la boucle "for".
    Pouvez-vous svp me filer un coup de main et me donner la marche à suivre?
    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Machine Head Voir le message
    Le soucis c'est que la méthode join(), indispensable dans mon application bloque la boucle "for".
    Pouvez-vous svp me filer un coup de main et me donner la marche à suivre?
    .join() attend que le thread crée se termine i.e. la fin de "Traitement(port)".
    Donc effectivement, çà va "bloquer" sauf à supprimer l'appel à "join"....

    Exemple:
    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
     
    def traitement(delay):
        time.sleep(delay)
        print ('* fin *')
     
    taches = []
     
    for _ in range(3):
        p = threading.Thread(target=traitement, args=(1.0,))
        p.start()
        print('demarrage de', p)
        taches.append(p)
     
    for p in taches:
        p.join()
     
    print('**done**')
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Python 2.X] Prblème Thread + Tkinter
    Par kobain4 dans le forum Tkinter
    Réponses: 1
    Dernier message: 08/04/2015, 22h13
  2. Probleme de creation des threads
    Par bb1992 dans le forum Linux
    Réponses: 1
    Dernier message: 04/08/2013, 16h50
  3. Python et le multi threading?
    Par Linux44 dans le forum Général Python
    Réponses: 5
    Dernier message: 17/05/2012, 16h53
  4. creation de thread
    Par menuge dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 11/08/2006, 09h14
  5. Problème de creation de thread sous linux
    Par xilebo dans le forum POSIX
    Réponses: 4
    Dernier message: 27/10/2004, 09h58

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