Comment capturer les valeurs de retour des fonctions basées sur des processus en multitraitement
Dans les applications multitraitements, il est courant d'avoir besoin de récupérer les valeurs de retour de fonctions exécutées par les processus enfants. La raison pour laquelle cela n'est pas facilement accessible est que les processus enfants ne peuvent pas transmettre directement les valeurs au processus principal. Cependant, il existe des techniques pour capturer efficacement ces valeurs.
Dans l'exemple donné, une liste de processus de travail est créée pour effectuer des tâches spécifiques et renvoyer leurs numéros de processus. Cependant, lorsque l'on tente d'accéder aux valeurs de retour des objets Process stockés dans la liste "jobs", il devient évident que ces valeurs ne sont pas directement stockées dans leurs attributs.
Pour surmonter ce défi, une approche différente est requis. Une solution efficace implique l'utilisation d'une variable partagée, telle qu'un dictionnaire. Cette variable partagée permet la communication entre les processus enfants et le processus principal.
Dans l'exemple modifié, un Manager est créé pour gérer la mémoire partagée entre les processus. Un dictionnaire, return_dict, est initialisé et passé en argument à la fonction de travail. Au sein du travailleur, le numéro de processus est attribué comme clé et le numéro de processus lui-même comme valeur.
Une fois que tous les processus ont terminé leur exécution, le processus principal rejoint les processus enfants puis accède au return_dict partagé. En itérant sur ses valeurs, les valeurs de retour souhaitées des processus enfants sont obtenues. Cette approche capture efficacement les valeurs de retour grâce à la communication inter-processus.
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!