Maison  >  Article  >  développement back-end  >  Comment utiliser le module multitraitement pour la gestion multi-processus dans Python 3.x

Comment utiliser le module multitraitement pour la gestion multi-processus dans Python 3.x

WBOY
WBOYoriginal
2023-07-31 18:36:231459parcourir

Comment utiliser le module multitraitement pour la gestion multi-processus dans Python 3.x

Introduction :
En Python, la popularité des processeurs multicœurs fait de la programmation multi-processus une compétence importante. Le module multiprocessing est une bibliothèque standard en Python permettant de gérer des multi-processus. Cet article présentera comment utiliser le module multitraitement pour la gestion multi-processus et l'illustrera avec des exemples de code.

1. Introduction au module multitraitement
Le module multitraitement de Python fournit un wrapper qui peut mapper les programmes Python pour qu'ils s'exécutent sur plusieurs processus. Le module multitraitement est thread-safe et offre plus de fonctionnalités que le module threading.

2. Fonctions et classes communes du module multitraitement

  1. Classe multiprocessing.Process
    La classe multiprocessing.Process est utilisée pour créer et gérer des processus. Il dispose de 4 méthodes principales :
  2. start() : Démarrez le processus et appelez la méthode run().
  3. run() : La fonction d'entrée du processus doit être définie par l'utilisateur.
  4. join([timeout]) : attendez la fin du processus. Si le délai d'attente n'est pas spécifié, il attendra la fin du processus.
  5. is_alive() : Déterminez si le processus est toujours en cours d'exécution.
  6. Fonction multiprocessing.current_process() La fonction
    multiprocessing.current_process() renvoie l'objet Process du processus en cours.
  7. Fonction multiprocessing.active_children() La fonction
    multiprocessing.active_children() renvoie une liste des processus enfants en cours d'exécution, y compris uniquement les processus enfants créés par le processus actuel.
  8. Classe multiprocessing.Pool
    La classe multiprocessing.Pool est utilisée pour créer un pool de processus, qui peut facilement gérer l'exécution de plusieurs processus. Les méthodes les plus couramment utilisées sont :
  9. apply(func, args) : exécute la fonction de manière synchrone et renvoie le résultat.
  10. apply_async(func, args) : exécutez la fonction de manière asynchrone et renvoyez l'objet AsyncResult.
  11. close() : Fermez le pool de processus et n'acceptez plus de nouvelles tâches.
  12. join() : le processus principal attend la fin de tous les processus enfants.

3. Exemple de code utilisant le module multitraitement
Ce qui suit est un exemple simple montrant comment utiliser le module multitraitement pour la gestion multi-processus :

import multiprocessing

def worker(name):
    print('Worker %s' % name)
    return name

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=4)
    results = []
    
    for i in range(4):
        result = pool.apply_async(worker, args=(i,))
        results.append(result)

    pool.close()
    pool.join()
    
    for result in results:
        print(result.get())

Dans le code ci-dessus, nous définissons d'abord une fonction de travail, qui accepte un nom. paramètres et imprimer le nom. Ensuite, utilisez multiprocessing.Pool dans le programme principal pour créer un pool de processus contenant 4 processus. Ensuite, nous utilisons la méthode apply_async pour exécuter de manière asynchrone la fonction de travail, en passant un paramètre i et en l'ajoutant à la liste des résultats. Enfin, attendez que tous les processus terminent leur exécution via les méthodes pool.close() et pool.join(). Enfin, nous obtenons le résultat de l'exécution via la méthode result.get() et l'imprimons.

L'exécution du code ci-dessus produira les résultats suivants :

Worker 0
Worker 1
Worker 2
Worker 3
0
1
2
3

Résumé :
En utilisant le module multitraitement, nous pouvons facilement effectuer une programmation multi-processus. Cet article présente les fonctions et classes communes du module multitraitement et montre comment les utiliser via un exemple de code. L'utilisation du module multitraitement permet de mieux utiliser les processeurs multicœurs et d'améliorer l'efficacité de l'exécution du programme.

Référence :
[1] Documentation officielle Python - module multitraitement https://docs.python.org/3/library/multiprocessing.html

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!

Déclaration:
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

Articles Liés

Voir plus