Comment partager un dictionnaire entre plusieurs processus à l'aide du multitraitement
Lors de la création de plusieurs processus qui fonctionnent sur une file d'attente partagée et utilisent un dictionnaire global pour stockage des résultats, il est crucial de résoudre les problèmes de synchronisation pour garantir une manipulation précise des données.
Une approche pour synchroniser l'accès à un dictionnaire partagé consiste à utiliser un objet Manager. Manager fournit un mécanisme pour créer et gérer des objets partagés accessibles par plusieurs processus.
Dans ce scénario spécifique, vous pouvez incorporer un objet Manager dans votre code comme suit :
from multiprocessing import Process, Manager def f(d): d[1] += '1' d['2'] += 2 if __name__ == '__main__': manager = Manager() d = manager.dict() d[1] = '1' d['2'] = 2 p1 = Process(target=f, args=(d,)) p2 = Process(target=f, args=(d,)) p1.start() p2.start() p1.join() p2.join() print(d)
La méthode Manager.dict() crée un dictionnaire partagé accessible par n'importe quel processus. En passant ce dictionnaire en argument à chaque processus, vous leur permettez de manipuler les données simultanément.
En rejoignant les processus, le processus principal peut imprimer le contenu du dictionnaire partagé, qui reflétera désormais les résultats accumulés. par tous les processus enfants.
Cette approche garantit que tous les processus ont accès au même dictionnaire et que les modifications apportées par un processus sont visibles par les autres, résolvant ainsi le problème de synchronisation.
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!