Maison  >  Article  >  développement back-end  >  Comment puis-je mettre à jour les variables globales des sous-processus en multitraitement ?

Comment puis-je mettre à jour les variables globales des sous-processus en multitraitement ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-06 07:54:02486parcourir

How Can I Update Global Variables from Subprocesses in Multiprocessing?

Multitraitement | Les mises à jour des variables globales ne sont pas renvoyées au parent

En multitraitement, chaque sous-processus s'exécute comme une instance Python distincte avec sa propre mémoire et son état global. Par conséquent, les mises à jour apportées aux variables globales au sein d'un sous-processus ne sont pas visibles par le processus parent. De plus, les données transmises entre les processus utilisant des proxys ou des files d'attente partagés doivent pouvoir être décapées.

Pour résoudre le problème spécifique concernant la non-décapabilité d'un objet LORR, envisagez les approches suivantes :

  1. Créer une sous-classe pickleable de LORR :
    Cela implique de créer une nouvelle classe qui hérite de LORR et implémente Méthodes __getstate__ et __setstate__ pour activer le décapage.
  2. Passez une référence à un objet ctype :
    Trouvez un moyen de stocker les données pertinentes dans un objet ctype et transmettez une référence à cet objet au processus enfant. Cependant, cette approche peut ne pas être fiable.
  3. Utilisez des files d'attente pour envoyer des messages:
    Établissez un système de communication entre les processus parent et enfant à l'aide de files d'attente. Le parent peut envoyer des appels de méthode à l'enfant et l'enfant peut renvoyer les résultats via la file d'attente.

N'oubliez pas que l'approche la plus appropriée dépendra de l'implémentation spécifique et des capacités de l'objet LORR.

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