Maison >développement back-end >Tutoriel Python >Comment récupérer les valeurs de retour des fonctions multiprocessing.Process ?

Comment récupérer les valeurs de retour des fonctions multiprocessing.Process ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-29 06:30:12845parcourir

How to Retrieve Return Values from multiprocessing.Process Functions?

Comment récupérer les valeurs de retour des fonctions transmises à multiprocessing.Process

Lors du passage d'une fonction à multiprocessing.Process, il est souvent nécessaire de récupérer la valeur de retour de la fonction. Cependant, ces valeurs ne sont pas facilement accessibles dans les objets Process renvoyés.

Considérez le code suivant :

import multiprocessing

def worker(procnum):

'''worker function'''
print str(procnum) + ' represent!'
return procnum

si nom == '__main__' :

jobs = []
for i in range(5):
    p = multiprocessing.Process(target=worker, args=(i,))
    jobs.append(p)
    p.start()

for proc in jobs:
    proc.join()
print jobs

Les valeurs de retour attendues ne sont pas disponibles via les objets Processus dans 'jobs'.

Solution : Utiliser une variable partagée

Pour récupérer les valeurs de retour, une variable partagée peut être utilisée pour permettre la communication entre le processus principal et les processus de travail.

importer multitraitement

def worker(procnum, return_dict):

"""worker function"""
print(str(procnum) + " represent!")
return_dict[procnum] = procnum

if nom == "__main__":

manager = multiprocessing.Manager()
return_dict = manager.dict()
jobs = []
for i in range(5):
    p = multiprocessing.Process(target=worker, args=(i, return_dict))
    jobs.append(p)
    p.start()

for proc in jobs:
    proc.join()
print(return_dict.values())

Explication :

  • Un gestionnaire multitraitement est utilisé pour créer le dictionnaire partagé, 'return_dict'.
  • Chaque processus de travail accède au 'return_dict' partagé et stocke sa valeur de retour sous son numéro de processus comme clé.
  • Le processus principal récupère les valeurs de retour en accédant les valeurs du dictionnaire.

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