L'autre fasson de voir les threads

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 555 fois - Téléchargée 33 fois

Contenu du snippet

Suite a un code precedant,posté par Shinji ,qui presenté une fasson de faire des threads, j'ai adapté un code qui a été conçu de cette manière dans une seconde technique, pour montrer aux debutants dans ce domaine les differentes possibilités.
Cette methode repose sur l'utilisation de la methode start_new_thread() contenue dans le module thread .
Des explications suplementaires sont sur le forum:
http://www.pythonfrance.com/forum.v2.aspx?ID=318898
par taz_iup.

Source / Exemple :


#Cree un Thread simple.

#necessaire pour le thread
import thread
#necessaire pour attendre dans ma fonction MyThread() mais pas obligatoire du tout.
import time
#Je l'utilise pour stocker les informations de mes threads dan ma fonction
import Queue
# Le Queue bal permet a la fonction MyThread de montrer que les deux threads s'executent en meme temp.
bal = Queue.Queue (100)
#nb est le nombre de boucles qui vont etre executees
nb = 10
#ici on declare la fonction qui va etre executee par le thread.
def MyThread(name,Time=0.2): 
    for i in range(nb):
        print name, i 
        bal.put ("Msg %d from %s"%(i,name)) 
        time.sleep (Time)

#Ici on declare la fonction principale que l'on devra appeler.        
def main():
    #On lance nos threads (le premier argument est la fonction, le deuxieme est un tuple avec les arguments de cette fonction.
    thread.start_new_thread(MyThread,("Thread 1",0.20))
    thread.start_new_thread(MyThread,("Thread 2",0.20))
    for i in range (nb*2): 
        msg = bal.get () 
        print "Reception message :", msg 

if __name__ == "__main__":
    main()

Conclusion :


Voila, le code marche chez moi, mais si il ne marche pas chez vous, veuillez me prevenir :p .
C'est mon premier post, alors ne soyez pas indulgents...
L'affichage optenue est assez spécial, mais cette source n'est la que pour expliquer le fonctionnement.

A voir également

Ajouter un commentaire Commentaires
Messages postés
5
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
23 décembre 2013

re

J'ai reussi à le faire fonctionner mais mon pb c'est ce que je lance les deux threads sans que le deuxième attend la fin d'exécution du premier pour se lancer

Merci d'avance pour vos aides
Messages postés
5
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
23 décembre 2013

Salut à tous,

Est ce qu'il y a une méthode similaire à "start_new_thread" dans le package threading?

Merci d'avance pour vos aides
Messages postés
5
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
23 décembre 2013

J'ai testé ce script avec python 2.3.x et 2.4.x et j'ai le même pb
'module' object has no attribute 'start_new_thread'
Messages postés
113
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
28 mars 2010

Merci enormement... je debute en python, et même si j ai l impression que la plupart je devrais utiliser des callback, celle ci me depanne en attendant

PS: pbl: impossible de comprendre l utilisation methode-class-librairie(?) callback

PS2: en fait je cherche à faire une barre de progression qui s affiche le temps de la copie d'un dossier via le fameux:

shutil.copytree(source, destination), mais qui n'accepte aucun argument supplementaire!
Messages postés
7
Date d'inscription
samedi 22 avril 2006
Statut
Membre
Dernière intervention
6 janvier 2008

tres propres et c'est bien codé ...
Je decouvre que python n'a rien a envier au c ....
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.