Comment mettre à jour les variables globales des processus enfants en multitraitement et m'assurer qu'elles sont accessibles par le processus parent ?

Susan Sarandon
Libérer: 2024-11-06 15:08:02
original
372 Les gens l'ont consulté

How do I update global variables from child processes in multiprocessing and ensure they are accessible by the parent process?

Mises à jour des variables globales multitraitements non renvoyées au parent

Lors de l'utilisation du multitraitement pour établir un processus secondaire, une instance Python distincte est créée avec son propre état mondial. Cet état global est isolé, rendant toute modification apportée aux variables globales par les processus enfants invisible au processus parent.

De plus, la majorité des abstractions multitraitements exploitent pickle pour transférer des données. Toutes les données transmises via des proxys doivent être pickleable, y compris tous les objets fournis par un Manager. La section Gestionnaire souligne que d'autres processus peuvent accéder aux objets partagés à l'aide de proxys.

Des restrictions similaires s'appliquent aux files d'attente, bien que la documentation omette cette information. Un test rapide confirme que toutes les données des files d'attente doivent également pouvoir être décapées.

Si le décapage de vos données reste impossible, envisagez de les stocker en tant qu'objet ctype et de transmettre une référence mémoire à un processus enfant. Cette approche est quelque peu risquée et doit être réservée aux situations où les autres options sont épuisées.

Dans votre cas, comprendre les complexités du LORR est crucial. S'il s'agit d'une classe Python, la sous-classer et définir les méthodes setstate et getstate peut faciliter le décapage.

Alternativement, extraire les données requises d'une instance LORR et les transmettre via une simple chaîne peut suffire. Envisagez d'utiliser des files d'attente pour envoyer des messages entre le processus principal et les processus enfants afin d'invoquer directement les méthodes objet, comme illustré dans le schéma ci-dessus.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal