Maison >développement back-end >Tutoriel Python >Comment puis-je paralléliser des boucles Python simples pour surmonter la limitation GIL ?
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!