en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?



  1. #1
    docEmmettBrown

    en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?


    ------

    bonjour à tous

    voila je me documente sur les threads et j'ai vue que sur python le mode multi tache n'existe pas, car le GIL bloquait les coeurs et donc on ne pouvait utiliser qu'un seul coeur. Et donc qu'on allait encore plus lentement avec les threads, donc en gros les threads s'est du série mais en parallèle...

    donc je me demande qu'elle est l'avantage de faire ca? pour moi c'est pas utilise et j'aimerais savoir en quoi utiliser des threads en python peut etre intéressant ?

    merci d'avance pour vos éclaircissement

    -----

  2. #2
    lou_ibmix_xi

    Re : en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?

    L'utilité des "thread" est de paralléliser les tâches, pas forcément d'aller plus vite. Sinon, le multi-thread n'aurait aucun intérêt sur une machine mono-processeur (avec un seul coeur). Or cette technique existait bien avant que les multicoeurs se démocratisent, où même en embarqué où les multi-coeurs sont encore plus ou moins rare...

    Imagine que tu ais une tâche A, à priori longue qui commence, et qu'en parallèle tu doivent faire de l'acquisition d'une donnée à une période inférieure à la durée de la tâche A. L'avantage des threads est qu'une telle implémentation est direct, chaque tâche tourne dans son propre thread, si le thread A est en cours d'exécution lorsqu'une nouvelle donnée arrive, il est interrompu puis reprends là où il en était, c'est géré par le "scheduleur" et c'est transparent pour le développeur. Sans les threads c'est toujours possible mais nettement plus compliqué pour le développeur puisqu'il faudra qu'il gère explicitement le basculement d'une fonction à une autre.

    Attention tout de même, ce n'est pas une solution miracle, les threads te cachent de la complexité d'implémentation, mais ils en ajoutent une nouvelle la synchronisations de tes tâches entre elles (une ressource nécessaire pour plusieurs tâche ne peut-être utilisée simultanément, la tâche X a besoin du résultat de la tâche Y...). C'est un problème qui devient vite compliqué...

  3. #3
    hysos

    Re : en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?

    Citation Envoyé par docEmmettBrown Voir le message
    bonjour à tous

    voila je me documente sur les threads et j'ai vue que sur python le mode multi tache n'existe pas,
    https://docs.python.org/2/library/mu...ool-of-workers

    http://stackoverflow.com/questions/4...415314#4415314

    http://www.fevrierdorian.com/blog/po...g-vs-threading

  4. #4
    polo974

    Re : en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?

    Nuances:
    1. ce n'est pas le multi tache qui n'est pas possible, c'est le parallélisme (et encore...)
    2. c'est l'implémentation cpython qui comporte cette limitation, elle n'existe pas avec pypy ou jython
    3. la limitation n'est que dans la partie python, donc si vous utilisez des librairies compilées exploitant la parallélisation, vous en profitez aussi.
    4. au pire, vous pouvez lancer plusieurs process en parallèle, et faire de la communication inter-process même si ça coûte en gros dix fois plus cher en cycles, donc utiliser avec parcimonie et réflexion (ça ne coûte rien de synchroniser des tâches qui durent 1s, alors que c'est très pénalisant pour des micro-tâches qui ne font que quelques cycle).
    Ensuite, il y a les lib genre tornado qui font des choses où il devient vite possible de planer un max...

    Enfin, petit rappel:
    Un quad core ne pourra au mieux aller que 4 fois plus vite, alors qu'un dev en C(++) bien compilé fait gagner un facteur 10 (si tout l'algo est en python), juste parce que ce n'est plus interprété.

    Donc le python, c'est super mais si la perf pure est recherchée, c'est ailleurs qu'il faut regarder (et accepter d'en payer le prix du dev)...
    Jusqu'ici tout va bien...

  5. A voir en vidéo sur Futura
  6. #5
    Bluedeep

    Re : en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?

    Citation Envoyé par polo974 Voir le message
    1. c'est l'implémentation cpython qui comporte cette limitation, elle n'existe pas avec pypy ou jython.
    Idem avec IronPython. (par contre Python.net, basé sur cpython souffre de la même limitation).
    Dernière modification par Bluedeep ; 09/06/2015 à 12h41.

  7. #6
    docEmmettBrown

    Re : en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?

    merci beaucoup pour vos réponses

Discussions similaires

  1. Python
    Par invitee851a923 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 10/12/2012, 06h25
  2. Boa ? Python ?
    Par Nicolas12 dans le forum Identification des espèces animales ou végétales
    Réponses: 5
    Dernier message: 19/11/2011, 18h00
  3. FFT Python
    Par berguem40 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 09/09/2011, 17h33
  4. les threads sur Python
    Par invite75a667e5 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 16/01/2010, 22h05
  5. Python
    Par invite3e3c726d dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 13/03/2009, 12h55