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!