98 votes

Quelle est la différence entre le multiprocessing et le subprocessing ?

Mon travail doit utiliser des techniques parallèles, et je suis un nouvel utilisateur de Python. Je me demandais donc si vous pouviez partager avec moi des informations sur le langage python. multiprocessing y subprocess modules. Quelle est la différence entre les deux ?

126voto

Martijn Pieters Points 271458

En subprocess vous permet d'exécuter et de contrôler d'autres programmes. Tout ce que vous pouvez lancer avec la ligne de commande sur l'ordinateur, peut être exécuté et contrôlé avec ce module. Utilisez-le pour intégrer des programmes externes dans votre code Python.

En multiprocessing vous permet de répartir les tâches écrites en python sur plusieurs processus afin d'améliorer les performances. Il fournit une API très similaire à l'API threading Il fournit des méthodes pour partager des données entre les processus qu'il crée, et facilite (beaucoup) la gestion de plusieurs processus pour exécuter du code Python. En d'autres termes, multiprocessing vous permet de tirer parti de plusieurs processus pour effectuer vos tâches plus rapidement en exécutant du code en parallèle.

45voto

unutbu Points 222216

Si vous voulez appeler un programme externe (en particulier un programme non écrit en Python), utilisez subprocess .

Si vous voulez appeler une fonction Python dans un sous-processus, utilisez multiprocessing .

(Si le programme est écrit en Python, mais qu'il est également importable, alors j'essaierai d'appeler ses fonctions en utilisant multiprocessing plutôt que de l'appeler en externe via subprocess .)

19voto

DNS Points 17577

Le sous-processus crée de nouveaux processus, mais à part stdin/stdout et toute autre API que l'autre programme peut implémenter, vous n'avez aucun moyen de communiquer avec eux. Son but principal est de lancer des processus qui sont complètement séparés de votre propre programme.

Le multiprocessing génère également de nouveaux processus, mais ceux-ci exécutent votre code et sont conçus pour communiquer entre eux. Vous l'utilisez pour répartir les tâches de votre propre programme sur plusieurs cœurs de processeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X