Comment paralléliser liste-de la compréhension des calculs en Python?

Les deux interprétations de la liste et la carte des calculs devrait-au moins en théorie-être relativement facile à paralléliser: chaque calcul à l'intérieur d'une liste-de la compréhension pourrait être fait indépendant de la méthode de calcul de tous les autres éléments. Par exemple dans l'expression

[ x*x for x in range(1000) ]

chaque x*x-Calcul pourrait (au moins en théorie) être menés en parallèle.

Ma question est: Est-il un Python-Module /Python-Mise en oeuvre et de Programmation Python-Astuce pour paralléliser une liste-de la compréhension de calcul (pour utiliser toutes les 16 /32 /... carottes ou de distribuer le calcul sur un Ordinateur en réseau ou sur un Nuage)?

  • En fait, dans Python 3 que le calcul n'est pas vraiment parallelisable, parce que range maintenant retourne un itérateur au lieu d'une liste (c'est un objet avec un next méthode qui retourne la valeur suivante). Donc, vous devez tirer les valeurs une par une, de toute façon.
  • Assurez-vous qu'il est. l'obtention de la prochaine valeur de l'itérateur est un faible coût de fonctionnement de la quadrature d'un nombre entier. Alors que vous techniquement ne peut pas paralléliser l'itération lui-même, ne signifie pas que vous ne pouvez pas paralléliser la chose entière. Imaginez [ sleep(1) for x in range(1000) ]. Ce sera sûrement rouler en 1/n th le temps où n est la taille de la piscine.
InformationsquelleAutor phynfo | 2011-03-08