Accès à la valeur de retour d'une fonction en multitraitement.Process
En multitraitement avec Python, obtention de la valeur de retour d'une fonction passée en multitraitement. Le processus peut être délicat, car il n'est pas stocké directement dans l'objet Process.
Considérez ce qui suit exemple :
import multiprocessing def worker(procnum): '''worker function''' print(str(procnum) + ' represent!') return procnum if __name__ == '__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)
Bien que ce code imprime la sortie de chaque processus de travail, nous ne pouvons pas accéder directement à leurs valeurs de retour.
Pour récupérer les valeurs de retour, nous pouvons utiliser une variable partagée. Dans le code révisé suivant, un Manager() du module multitraitement est utilisé pour créer un dictionnaire partagé :
import multiprocessing def worker(procnum, return_dict): """worker function""" print(str(procnum) + " represent!") return_dict[procnum] = procnum if __name__ == "__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())
Ici, chaque processus de travail met à jour le dictionnaire partagé return_dict avec sa valeur de retour. Le processus principal peut alors accéder à ces valeurs depuis le dictionnaire partagé.
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!