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

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-08 04:19:01787parcourir

How to Update Global Variables in Parent Process When Using multiprocessing in Python?

Mises à jour des variables globales non reflétées dans le parent avec le multitraitement

En multitraitement, la création d'un nouveau processus lance une instance Python distincte avec son propre état global . Les modifications apportées aux variables globales au sein des processus enfants ne sont pas visibles par le processus parent.

Ce problème provient du fait que les données transférées entre les processus utilisant le multitraitement sont généralement récupérées. Le décapage nécessite que les objets soient sérialisables, ce qui peut ne pas être possible pour certains objets comme les instances LORR.

Pour résoudre ce problème, envisagez ces approches :

  1. Création d'un objet ctype : Stockez les données dans un objet ctype et transmettez la référence mémoire au processus enfant. Cependant, cette méthode n'est pas couramment utilisée et peut être complexe.
  2. Sous-classement LORR : Si LORR est une classe et que le sous-classement est possible, implémentez getstate et méthodes setstate pour activer le décapage. Cependant, cela nécessite une compréhension approfondie de la structure interne de LORR.
  3. Messagerie via les files d'attente : Alternativement, vous pouvez utiliser des files d'attente pour communiquer entre les processus. Au lieu de transmettre des instances LORR, envoyez des messages aux processus enfants demandant des exécutions de méthodes spécifiques. Les données des méthodes peuvent ensuite être renvoyées sous forme de chaînes via des files d'attente.

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