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 :

Multi Threads en Python


Sujet :

Python

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 280
    Points : 149
    Points
    149
    Par défaut Multi Threads en Python
    Bonjour,

    Je voudrais savoir si Python permet de faire du multithreads ? J'ai trouvé sur ce sujet beaucoup de discussion assez vieille je voudrais savoir ce qui l'en est de la version 3.1 à ce sujet.

    C'est expliqué dans un cours Python ?

    Merci pour vos réponses.
    "Bien qu'on ait du coeur à l'ouvrage,
    L'Art est long et le Temps est court." - CB

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 280
    Points : 149
    Points
    149
    Par défaut
    apparemment c'est faisable
    Si quelqu'un connaît de la doc en français je suis preneur
    "Bien qu'on ait du coeur à l'ouvrage,
    L'Art est long et le Temps est court." - CB

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Le multithreading en Python marche très bien, y compris avec la v2.7.

    On utilise le module threading.

    On peut créer et faire interagir autant de threads qu'on veut. Les threads peuvent se partager des données, et les collisions d'accès à ces données sont gérées grâce à des verrous.

    Avec google on trouve quelques pages en français, mais rien de complet. Il y a des éléments dans le tuto de Swinnen (http://python.developpez.com/cours/TutoSwinnen/ chapitre 18). Et j'ai fait quelques trucs sur le sujet (http://python.jpvweb.com/mesrecettes...ion_par_thread).

    Le seule limite pratique: on ne peut pas arrêter un thread de force! Mais on peut contourner ça la plupart du temps.

    Python a aussi de quoi utiliser le multiprocessing (module de même nom).
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    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,

    Python 3.2 vient avec le module concurrent.futures qui permet d'avoir une couche d'abstraction intéressante "au dessus" de threading et de multiprocessing.

    Ce module est aussi disponible sur les versions précédentes, voir PyPi

    Pour ce qui est de documentation "en français", çà ne dépassera pas les introductions sympa pour débuter. En fait, au plus les sujets sont compliqués au plus l'audience sera réduite et producteurs et audience confinés au "globbish" et à la lecture des sources.

    Cordialement,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éprouvé

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Points : 1 273
    Points
    1 273
    Par défaut
    Juste pour préciser que si les threads fonctionnent très bien en python, ils souffrent (presque) toujours d’une limitation de taille*: à cause du GIL (Global Interpreter Lock, afair), ils ne sont pas exécutés en parallèle (sur les multi-cœurs), mais sérialisés (autrement dit, un seul interpréteur python = un seul cœur d’utilisé)…

    Frustrante limite que n’ont pas les processus –*c’est pour ça que j’adore concurrent, d’ailleurs*!

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 280
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    D'abord merci à vous trois pour vos réponses.

    Citation Envoyé par tyrtamos Voir le message
    Le multithreading en Python marche très bien, y compris avec la v2.7.
    Super

    Avec google on trouve quelques pages en français, mais rien de complet. Il y a des éléments dans le tuto de Swinnen (http://python.developpez.com/cours/TutoSwinnen/ chapitre 18).
    Honte à moi mon livre d'apprentissage... C'est vrai qu'à lépoque je n'y comprenais rien au threads... Je vais consulter le chapitre en question

    Et j'ai fait quelques trucs sur le sujet (http://python.jpvweb.com/mesrecettes...ion_par_thread).
    Merci beaucoup je regarde ça...

    Pour ce qui est de documentation "en français", çà ne dépassera pas les introductions sympa pour débuter. En fait, au plus les sujets sont compliqués au plus l'audience sera réduite et producteurs et audience confinés au "globbish" et à la lecture des sources.
    Très vrai et tellement frustrant... c'est quoi un globbish ?

    Citation Envoyé par mont29 Voir le message
    Juste pour préciser que si les threads fonctionnent très bien en python, ils souffrent (presque) toujours d’une limitation de taille*: à cause du GIL (Global Interpreter Lock, afair), ils ne sont pas exécutés en parallèle (sur les multi-cœurs), mais sérialisés (autrement dit, un seul interpréteur python = un seul cœur d’utilisé)…

    Frustrante limite que n’ont pas les processus –*c’est pour ça que j’adore concurrent, d’ailleurs*!
    Ah zut je voulais les utiliser pour ça justement pour un serveur avec dispatcher et worker.

    Citation Envoyé par wiztricks Voir le message
    Python 3.2 vient avec le module concurrent.futures qui permet d'avoir une couche d'abstraction intéressante "au dessus" de threading et de multiprocessing.
    Est ce que ça rend possible le paralélisme de threads ?

    Python a aussi de quoi utiliser le multiprocessing (module de même nom).
    parallèlisme ?
    "Bien qu'on ait du coeur à l'ouvrage,
    L'Art est long et le Temps est court." - CB

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 280
    Points : 149
    Points
    149
    Par défaut
    Tyrtamos il est super ton site je le mets dans mes favoris, merci.

    Apparemment multiprocessing permet de faire du parallèlisme sur les multicoeurs... je suis en train de lire la doc
    "Bien qu'on ait du coeur à l'ouvrage,
    L'Art est long et le Temps est court." - CB

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Un petit déterrage de post, pour revenir sur ce sujet.

    Citation Envoyé par mont29 Voir le message
    Juste pour préciser que si les threads fonctionnent très bien en python, ils souffrent (presque) toujours d’une limitation de taille*: à cause du GIL (Global Interpreter Lock, afair), ils ne sont pas exécutés en parallèle (sur les multi-cœurs), mais sérialisés (autrement dit, un seul interpréteur python = un seul cœur d’utilisé)…

    Frustrante limite que n’ont pas les processus –*c’est pour ça que j’adore concurrent, d’ailleurs*!
    Ok pour la limitation mais qu'en est-il du module multi-processing ? Je pense que cette limitation ne s'applique à cette utilisation. Le module multiprocessing va "spawner" plusieurs process pour faire le boulot et utiliser tout les coeurs...
    On peut y avoir ici un large champ d'utilisation.

    Merci pour les Cours et tutoriels pour apprendre la programmation Python , en particulier celui la est super génial : Apprendre à programmer avec Python 3 par Gérard Swinnen

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

Discussions similaires

  1. Python et le multi threading?
    Par Linux44 dans le forum Général Python
    Réponses: 5
    Dernier message: 17/05/2012, 16h53
  2. Problème Multi thread Python 3.2
    Par SmithC dans le forum Général Python
    Réponses: 5
    Dernier message: 03/05/2011, 10h48
  3. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  4. Effectuer du multi THREAD en python
    Par parp1 dans le forum Général Python
    Réponses: 3
    Dernier message: 10/05/2006, 12h56
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 18h09

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