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 :
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!