Developpez.com

Le Club des Développeurs et IT Pro

Python 3.2 : la programmation parallèle arrive

Avec la première bêta de la nouvelle version du langage

Le 2010-12-13 14:55:18, par Idelways, Expert éminent sénior
Mise à jour du 21/02/11 par Gordon Fowler

Depuis le gel de la syntaxe de Python, la branche des versions 2.x ne se verra plus ajouter que des corrections de bugs. Les réelles nouveautés, elles, seront intégrées directement dans le branche 3.x.

C'est donc avec un certain intérêt que les développeurs verront la sortie de Python 3.2, rendu disponible pendant le week-end.



Les efforts des équipes de développement de Python 3.2 se sont portés sur l'amélioration des librairies standards et le support du port du code vers Python 3.x. Rien de révolutionnaire donc mais des améliorations bienvenues (lire également ci-avant).

Une situation qui ne pouvait de toute façon être que difficilement autre avec ce moratoire.

Les différences entre Python 3.1 et Python 3.2 sont énumérées avec précision sur cette liste détaillée.

Python 3.2 est disponible sur cette page

Python 3.2 : la programmation parallèle arrive
avec la première bêta de la nouvelle version du langage

La première bêta de la prochaine version 3.2 du langage de programmation Python est désormais disponible.

Cette version maintient la même syntaxe et sémantique que la 3.0 mais devrait offrir d'ici sa sortie, en février, un meilleur support pour l'écriture d'applications réellement "multi-threadées".

Bien que le multicoeurs est désormais la norme établie en terme de processeurs, écrire des applications pouvant profiter simultanément de la puissance de calcul de plusieurs processeurs reste un vrai challenge pour les développeurs.

Une tâche à la base difficile, compliquée par les supports souvent insuffisant, voir inexistants des langages les plus populaires.

Ce à quoi, la version 3.2 de Python veut remédier, grâce aux fonctions d'un nouveau package destiné à faciliter cette tâche, jusqu'ici possible mais pas vraiment « developer-friendly ».

Proposé initialement par Brian Quinlan, ce projet devrait fournir une librairie de haut niveau appelée "Futures", qui sera disponible à partir d'un nouvel espace de nommage appelé à son tour et à juste titre "Concurrent".

Future devrait offrir un ensemble de classes qui permettra, par exemple, de lancer des calculs asynchrones.

Cette première bêta corrige aussi de nombreux bugs et se concentre sur l'amélioration de la bibliothèque standards du langage et le port des applications à Python 3.x.

Son module SSL (Secure Sockets Layer) a aussi été amélioré.

Un autre module facilitera l'accès aux informations de configurations.

Enfin, une nouvelle extension devrait permettre aux fichiers sources d'être partagés entre plusieurs versions de l'interpréteur Python.

Cette version beta est disponible en téléchargement sur cette page

Plus de détails sur le projet « futures » sur cette page

Source : Le site officiel de Python

Et vous ?

Avez-vous déjà essayé la programmation parallèle avec Python ?
Que pensez-vous des améliorations qu'apportent la beta de la version 3.2 du langage ?

En collaboration avec Gordon Fowler
  Discussion forum
9 commentaires
  • Camille_B
    Membre éclairé
    Je suis curieux de savoir comment "future" interagit avec GIL, vous savez ce truc que ce cher Guido justifie par un laconique :

    "Just Say No to the combined evils of locking, deadlocks, lock granularity, livelocks, nondeterminism and race conditions."

    et qui consiste tout simplement à... "sérialiser" du code "multi-threadé" !

    Cela j'ai totalement laissé tombé ce langage depuis 2.5, il y a peut-être du nouveau depuis
  • FredOoo123
    Membre à l'essai
    Envoyé par Apocalypses
    python à réussis à s'en passer depuis des années.
    Mickael
    Mais pendant ces années, les processeurs n'étaient pas multicoeurs.
    Et maintenant que les utilisateurs ont payé chère des processeurs qui le sont, ils veulent que les applications suivent.
    Ils en veulent pour leur argent et ils ont bien raison.

    Souvenez-vous pendant combien d'années Microsoft n'a pas utilisé la gestion de la mémoire étendue mise à disposition par Intel.
    Et pourquoi un certain étudiant finlandais a créé Linux pendant ses vacances d'été.
  • rambc
    Membre chevronné
    Envoyé par FredOoo123
    Et pourquoi un certain étudiant finlandais a créé Linux pendant ses vacances d'été.
    Peux-tu nous rafraichir la mémoire ?
  • FredOoo123
    Membre à l'essai
    rambc n'a pas compris, c'est grave ?
  • rambc
    Membre chevronné
    C'est juste que je ne suis pas un spécialiste de l'histoire de l'informatique...
  • Loenix
    Membre actif
    Bonjour a tous,

    Pour ma part, je n'ai jamais eux recourt à la programmation parallèle, (n'ayant programmé qu'en python, c'est peut-être pour cela ^^), aillant vu le concept il y a peut de temps cela semble tout à fait intéressant et cette arrivé sur python tombe à pic. Toutefois, je ne voix pas cela non plus comme une révolution mais comme une amélioration, python à réussis à sens passer depuis des années.

    Pour le reste, je pense que toutes améliorations est bonne à prendre. Je déplore quand même le fait qu'il est gardé la même syntaxe et sémantique que la 3.0 car les problème de compatibilité entre 2.x et 3.x ne font que s'accumuler, la transition est vraiment un soucie au j'aurai espéré peut-etre... un mini retour en arrière.
    Pour ce qui est de l'améliorations à l'accès des configurations c'est un vrai plus, souvent tortueux de récupérer des informations sur le système pour faire un programme solide, nous allons pouvoir enfin faire des programmes "interactifs" avec notre OS favoris

    Au final, je trouve bien le fait que python se renouvelle sans cesse pour proposer des versions de plus en plus performantes même si les librairies externes ne suivent pas toujours (c'est une sorte d'appel )... J'espère qu'ils ne trouveront pas trop de bug sur cette dernière.

    Aller, je vous embête pas plus ^^, bon courage à tous et...

    Au suivant

    Mickael
  • wiztricks
    Expert éminent sénior
    Envoyé par Camille_B
    Je suis curieux de savoir comment "future" interagit avec GIL, vous savez ce truc que ce cher Guido justifie par un laconique :

    "Just Say No to the combined evils of locking, deadlocks, lock granularity, livelocks, nondeterminism and race conditions."

    et qui consiste tout simplement à... "sérialiser" du code "multi-threadé" !

    Cela j'ai totalement laissé tombé ce langage depuis 2.5, il y a peut-être du nouveau depuis
    Il faut lire le PEP3148:
    Futures are created by concrete implementations of the Executor class (called ExecutorService in Java). The reference implementation provides classes that use either a process or a thread pool to eagerly evaluate computations.
    Python 2.6/2.7 incluent le module multiprocessing qui offre une API similaire à celles du threading en utilisant des processus séparés.
    Et ca permet d'utiliser les processeurs disponibles par un side-step du GIL - on passe à côté. Ce n'est pas idéal, mais c'est largement suffisant pour l'utilisation de Python en mode "intégration" i.e. glue entre bibliothèques externes qui sont elles multithreades sans contrainte GIL.
    - W.
  • wiztricks
    Expert éminent sénior
    Envoyé par rambc
    C'est juste que je ne suis pas un spécialiste de l'histoire de l'informatique...
    L'histoire de l'informatique nous dit que les multiprocesseurs sont diffusés assez largement depuis les années 80. Depuis des milliards de dollars ont été dépensés pour faire carburer des têtes bien pleines sur la parallélisation sans aboutir à des solutions convaincantes autres que le modèle SIMD appliqué à différents niveaux (et multiprocessing ou concurrent Python ne sont que des avatars de ce modèle).
    note: un hyperviseur à la VMware n'est qu'une sorte de SIMD.

    Pour faire mieux il faut hélas souvent gérer soi-même la distribution de la charge en fonction des besoins applicatifs et des possibilités techniques du jour.
    - W