Supposons que vous ayez une compréhension de liste dans Python, comme avec f être une fonction sans effets secondaires. Donc, toutes les entrées peuvent être calculées indépendamment. P> est python capable d'augmenter la performance de cette compréhension de la liste par rapport à la mise en œuvre "évidente"; par exemple. Par parallèle de mémoire partagée sur les processeurs multicœurs? P> P>
3 Réponses :
Non, Python ne fera pas la parallélise magiquement cela pour vous. En fait, cela ne peut pas, car il ne peut pas prouver l'indépendance des entrées; Cela nécessiterait une grande partie de l'inspection / vérification du programme, qui est impossible à obtenir dans le cas général.
Si vous voulez un parallélisme multicœur à grain grossier, je recommande JOBLIB à la place: P>
from joblib import delayed, Parallel values = Parallel(n_jobs=NUM_CPUS)(delayed(f)(x) for x in range(1000))
Essayez si ce qui suit peut être plus rapide: c'est une manière fonctionnelle à coder p> une autre idée consiste à remplacer toutes les provenances de
in python 3.2 Ils ont ajouté Concurrent.Futures
, une belle bibliothèque pour résoudre les problèmes simultanément. Considérez cet exemple:
>>> bench(listcomp) Completed in 14.463825941085815 seconds >>> bench(concurrent) Completed in 3.818351984024048 seconds
Vous voudrez peut-être utiliser un décorateur pour votre fonction "banc", car il s'agit déjà d'un décorateur déjà.
Je ne pense pas que Python puisse, mais il y a d'autres informations dans une question similaire Stackoverflow.com/Questions/5236364/... .