Maison >développement back-end >Tutoriel Python >Les données partagées en lecture seule doivent-elles être copiées dans des environnements multitraitements ?
Lors de l'utilisation du multitraitement, la question se pose de savoir si les données partagées en lecture seule sont copiées dans différents processus. Si oui, comment empêcher ou encourager cette copie ?
L'extrait de code fourni, qui utilise un tableau global comme paramètre par défaut dans une fonction exécutée par plusieurs processus, soulève des inquiétudes concernant la duplication de la mémoire. Pour empêcher des processus individuels d'obtenir une copie distincte des données, envisagez d'utiliser la mémoire partagée.
Le multitraitement et Numpy peuvent être combinés pour partager des données efficacement :
<code class="python">import multiprocessing import ctypes import numpy as np shared_array_base = multiprocessing.Array(ctypes.c_double, 10*10) shared_array = np.ctypeslib.as_array(shared_array_base.get_obj()) shared_array = shared_array.reshape(10, 10)</code>
Au sein de la fonction exécutée par chaque processus, les modifications apportées au tableau partagé sont visibles par tous :
<code class="python">def my_func(i, def_param=shared_array): shared_array[i,:] = i</code>
Le approprié Le mécanisme pour résoudre ce problème dépend des exigences spécifiques et des modèles d'accès de l'application. La mémoire partagée offre une approche efficace pour empêcher la duplication des données dans ce contexte, garantissant un accès partagé entre plusieurs processus.
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!