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 :

Archi Débutant pour thread


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Archi Débutant pour thread
    bonjour,

    je suis un noob total en programmation et du coup je ne copmprend pas bien le tuto sur les thread...

    Voici mon besoin :

    J'ai un programme qui execute une fonction "CheckNumber" qui fait 2 boucles for à la suite et qui renvoie 2 nombres:

    Le truc c'est que ça prend un peu de temps, je souhaiterai donc lancer en même temps les 2 boucles "for".

    Actuellement, j'appelle la fonction dans mon main de cette façon :

    numb1, numb2 = CheckNumber()

    Comment faudrait-il faire pour parralléliser ces 2 boucles et attendre la fin des 2 résultats avant de continuer

    Merci par avance

    Cdlt

  2. #2
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Bonjour 6FoursPlaya,

    Il faut d'abord être sur que tes boucles FOR n'ont pas besoin d'être exécuté l'une à la suite de l'autre. Ensuite, il faut t'assurer que tu n'a pas moyen d'optimiser ton code. Si tout cela est OK, tu peut effectivement passer au Thread.

    http://python.developpez.com/faq/?page=Thread

    Le principe est que tu créé deux objets thread: un par fonction. Chaque fonction contenant une de tes boucles for.

    Pour savoir si tes deux fonctions sont terminées, la méthode la plus rapide, mais la moins propre sans doute est d'utiliser des variables globales, que tu remettra à zéro une fois tes fonctions terminées.

    Cependant, attention: le principe d'un thread c'est de lancer du code en boucle en permanence (ex typique: un messenger avec un thread envoi et un thread reception). Tu devra donc peut etre jouer avec les .start et .stop.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 31
    Points
    31
    Par défaut
    Attention les jeunes !
    Si vous voulez utiliser les Thread python pour faire de la performance , NE LE FAITES PAS !
    En effet python embarque ce qu'ils appellent le "Global Interpretor Lock" qui empeche tout simplement l'execution parrallele. Vous aurez tout de même l'impression de parrallelisme ( les deux threads qui s'executent en meme temps ) , mais ça ne marche pas.( meme dans python3)

    Optez plutot pour le module miltiprocessing de python, c'est moins pratique qu'un thread, mais c'est vraiment une execution parrallele.

    Un peu de documentation :
    http://docs.python.org/2/library/threading.html
    CPython implementation detail: In CPython, due to the Global Interpreter Lock, only one thread can execute Python code at once (even though certain performance-oriented libraries might overcome this limitation). If you want your application to make better use of the computational resources of multi-core machines, you are advised to use multiprocessing. However, threading is still an appropriate model if you want to run multiple I/O-bound tasks simultaneously.

  4. #4
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Merci Tartine pour ces précisions, que personnellement j'ignorais. Une info a retenir.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

Discussions similaires

  1. Tutoriel pour archi débutant
    Par Tiffado dans le forum Salesforce.com
    Réponses: 11
    Dernier message: 28/07/2015, 18h24
  2. [Débutant] boost::thread non-lvalue
    Par Tymk dans le forum Boost
    Réponses: 16
    Dernier message: 18/11/2006, 14h23
  3. Gros débutant pour inclure
    Par l'hermite du net dans le forum Langage
    Réponses: 2
    Dernier message: 17/10/2006, 04h04
  4. Cherche débutant pour débuter avec moi ;)
    Par systemofaxav dans le forum OpenGL
    Réponses: 6
    Dernier message: 24/02/2006, 11h13

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