Maison >développement back-end >Tutoriel Python >Comment puis-je facilement paralléliser une boucle Python simple à l'aide du multitraitement ?

Comment puis-je facilement paralléliser une boucle Python simple à l'aide du multitraitement ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-03 16:25:12365parcourir

How Can I Easily Parallelize a Simple Python Loop Using Multiprocessing?

Parallélisation d'une boucle Python simple

La boucle Python fournie itère sur une plage et effectue un calcul pour chaque itération. Bien qu'il existe plusieurs façons de paralléliser cette boucle, la question précise une préférence pour l'approche la plus simple. Deux méthodes simples utilisant le multitraitement sont expliquées ci-dessous.

Multitraitement avec le module multitraitement

Le module multitraitement fournit une classe ProcessPool pour créer un pool de processus. Le code peut être réécrit comme suit :

import multiprocessing

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

Ici, un pool de quatre processus est créé. La méthode pool.map() applique la fonction calc_stuff à chaque élément de l'itérable et renvoie un tuple de résultats.

Multitraitement avec concurrent.futures.ProcessPoolExecutor

Alternativement , le module concurrent.futures fournit une classe ProcessPoolExecutor qui simplifie la création et la gestion des processus. Le code devient :

from concurrent.futures import ProcessPoolExecutor

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

Les deux approches utilisent le module multitraitement en interne et fournissent un moyen simple de paralléliser la boucle sous Linux et d'autres systèmes d'exploitation.

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