Maison > développement back-end > Tutoriel Python > Comment puis-je paralléliser les boucles Python pour une efficacité améliorée ?

Comment puis-je paralléliser les boucles Python pour une efficacité améliorée ?

Linda Hamilton
Libérer: 2024-12-05 02:02:09
original
916 Les gens l'ont consulté

How Can I Parallelize Python Loops for Improved Efficiency?

Parallélisation des boucles Python pour une efficacité améliorée

En Python, la parallélisation des boucles peut améliorer considérablement les performances des tâches liées au processeur. Pour paralléliser la boucle fournie, qui calcule les valeurs à l'aide de la fonction calc_stuff et accumule les résultats dans des listes séparées, il existe deux approches efficaces :

Méthode 1 : Multitraitement

En raison au Global Interpreter Lock (GIL) de Python, l'utilisation de plusieurs threads ne présentera aucun avantage pour les tâches liées au processeur. Au lieu de cela, le multitraitement est une option plus appropriée.

À l'aide du module multitraitement, vous pouvez créer un pool de processus avec plusieurs processus de travail, comme indiqué ci-dessous :

pool = multiprocessing.Pool(4)  # Create a pool with 4 worker processes
out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
Copier après la connexion

La fonction map envoie chaque élément dans l'itérateur de plage d'un processus de travail, collecte les résultats renvoyés et les décompresse dans les fichiers out1, out2 et out3 listes.

Méthode 2 : Concurrent.futures Python 3.2

Une autre option pratique pour paralléliser les boucles consiste à utiliser le module Concurrent.futures, qui fournit une interface optimisée pour l'utilisation pools de threads et de processus :

with concurrent.futures.ProcessPoolExecutor() as pool:
    out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
Copier après la connexion

Cette approche utilise un pool de processus sous le capot, se comportant de la même manière que le méthode multitraitement.

Les deux méthodes permettent une exécution parallèle de la fonction calc_stuff sur différentes entrées, ce qui entraîne des temps d'exécution plus rapides pour les boucles gourmandes en CPU.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal