Maison >développement back-end >Tutoriel Python >Comment puis-je paralléliser des boucles Python simples pour surmonter la limitation GIL ?

Comment puis-je paralléliser des boucles Python simples pour surmonter la limitation GIL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-30 14:49:11375parcourir

How Can I Parallelize Simple Python Loops to Overcome the GIL Limitation?

Parallélisation de boucles Python simples

Le verrouillage global de l'interpréteur (GIL) dans CPython empêche l'exécution simultanée de code Python par plusieurs threads. Par conséquent, l'utilisation de processus est plus efficace pour les charges de travail liées au processeur, comme celle présentée dans l'exemple de boucle.

La bibliothèque standard Python propose deux méthodes simples pour créer des pools de processus :

1 . Module multitraitement :

pool = multiprocessing.Pool(4)
out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))

2. concurrent.futures.ProcessPoolExecutor :

with concurrent.futures.ProcessPoolExecutor() as pool:
    out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))

En utilisant l'une ou l'autre méthode, la fonction calc_stuff est exécutée en parallèle et les résultats sont collectés dans les listes de sortie out1, out2 et out3. Cette approche parallélise efficacement le calcul et utilise plusieurs processeurs sur le système.

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!

Déclaration:
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