Multiprocessing.Pool : quelle méthode dois-je utiliser ?
Le multitraitement permet à Python d'exécuter des fonctions simultanément sur plusieurs processus. Cependant, choisir la méthode appropriée peut prêter à confusion, en particulier si l'on considère Pool.apply, Pool.apply_async et Pool.map. Clarifions leurs différences et leurs cas d'utilisation :
Pool.apply vs Pool.apply_async vs Pool.map
1. Pool.apply :
2. Pool.apply_async :
3. Pool.map :
Choisir la bonne méthode
Utilisez Pool.apply si :
Utilisez Pool.apply_async si :
Utilisez Pool.map si :
Exemple : rappel asynchrone dans Pool.apply_async
<code class="python">import multiprocessing as mp import time def foo_pool(x): time.sleep(2) return x*x result_list = [] def log_result(result): result_list.append(result) def apply_async_with_callback(): pool = mp.Pool() for i in range(10): pool.apply_async(foo_pool, args = (i, ), callback = log_result) pool.close() pool.join() print(result_list) if __name__ == '__main__': apply_async_with_callback()</code>
Sortie :
[1, 0, 4, 9, 25, 16, 49, 36, 81, 64]
Notez que l'ordre des résultats peut ne pas correspondre à l'ordre des appels de fonction, contrairement à Pool.map.
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!