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
Libérer: 2024-12-03 16:25:12
original
360 Les gens l'ont consulté

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)))
Copier après la connexion

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)))
Copier après la connexion

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!

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