Veuillez m'expliquer quelle est la différence entre ces deux classes?
J'ai remarqué que le module multiprocessing
existait dans Python 2. Mais fonctionnellement?
Comme indiqué dans la documentation, concurrent.futures.ProcessPoolExecutor
est un wrapper autour d'un multiprocessing.Pool
. En tant que tel, les mêmes limitations de multiprocessing
s'appliquent (par exemple, les objets doivent être décapables).
Cependant, concurrent.futures
vise à fournir une interface abstraite qui peut être utilisée pour gérer différents types de tâches asynchrones de manière pratique. par exemple. changer votre stratégie asynchrone de l'utilisation de pools de processus à l'utilisation de threads est souvent aussi simple que de changer une ou deux lignes de code (plutôt que de devoir tout coder vous-même). Un autre avantage (connexe) de l'abstraction est que concurrent.futures
fournit une API unique à retenir - Et vous pouvez choisir l'exécuteur qui convient le mieux à la tâche. Utilisez-vous votre processus IO lié? Génial, utilisez un ThreadPoolExecutor
. Allez-vous avoir du mal à accélérer les choses à cause du Global Interpreter Lock (GIL)? Pas de problème, utilisez un ProcessPoolExecutor
.