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 ?
Réponses
Trop de publicités?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.
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
.)
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.