Maison  >  Article  >  développement back-end  >  Comment puis-je mettre à jour les variables globales dans le processus parent lors de l'utilisation du multitraitement en Python ?

Comment puis-je mettre à jour les variables globales dans le processus parent lors de l'utilisation du multitraitement en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-07 02:50:02228parcourir

How Can I Update Global Variables in the Parent Process When Using Multiprocessing in Python?

Incapacité du multitraitement à mettre à jour les variables globales dans le processus parent

En multitraitement, les processus parent et enfant existent dans des instances Python distinctes, avec leurs propres mémoire et variables globales. Les modifications apportées aux variables globales partagées dans les processus enfants ne sont pas accessibles au processus parent. De plus, les contraintes imposées par les protocoles de sérialisation tels que pickle interdisent le transfert d'objets non pickleables.

Relever le défi

Une solution potentielle consiste à trouver un moyen de stocker les données en utilisant des objets ctype, permettant de transmettre les références à la mémoire aux processus enfants. Cependant, cette approche n'est pas simple.

Spécifique à l'objet LORR

La non-décapage de l'objet LORR pose un défi supplémentaire. Pour surmonter ce problème, on pourrait envisager de sous-classer LORR et d'implémenter les méthodes __setstate__ et __getstate__ pour le décapage. Alternativement, il peut être possible d'extraire les données nécessaires de l'instance LORR et de les transmettre sous forme de chaîne via les files d'attente, éliminant ainsi le besoin de sérialisation des objets. Cette approche consiste à envoyer des instructions de message aux processus enfants et à recevoir des réponses contenant les données requises.

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