Maison > développement back-end > Tutoriel Python > Comment puis-je récupérer les valeurs de retour des instances multiprocessing.Process en Python ?

Comment puis-je récupérer les valeurs de retour des instances multiprocessing.Process en Python ?

Patricia Arquette
Libérer: 2024-11-28 11:48:12
original
526 Les gens l'ont consulté

How Can I Retrieve Return Values from multiprocessing.Process Instances in Python?

Extraction des valeurs de retour des fonctions dans les instances Multiprocessing.Process

La possibilité de récupérer les valeurs de retour des fonctions passées à multiprocessing.Process peut être un fonctionnalité utile, en particulier lorsque l’exécution de tâches asynchrones est requise. Malheureusement, les valeurs ne sont pas immédiatement accessibles depuis l'objet Process, ce qui nécessite une approche alternative.

Comprendre le stockage des valeurs

Contrairement aux fonctions Python traditionnelles, celles transmises au multiprocessing.Process n'ont pas d'attribut de valeur de retour. Au lieu de cela, la valeur est stockée dans un emplacement distinct, notamment dans un objet de mémoire partagée. En effet, les processus créés à l'aide du multitraitement s'exécutent dans des espaces mémoire séparés, empêchant l'accès direct aux variables du processus principal.

Utilisation de variables partagées pour la communication

Pour accéder au valeur de retour, nous devons établir une forme de communication entre les processus. Une méthode efficace consiste à utiliser des variables partagées. Ce sont des objets qui permettent à plusieurs processus de partager et d'accéder simultanément aux données. Dans notre cas, nous créons un objet gestionnaire et un dictionnaire partagé en utilisant multiprocessing.Manager(). Le dictionnaire fait office de variable partagée.

Accès à la valeur de retour

Dans la fonction de travail, nous remplissons le dictionnaire partagé avec la valeur de retour souhaitée. Le processus principal, après avoir attendu la fin de toutes les tâches, peut accéder à ces valeurs et les récupérer à partir du dictionnaire partagé. En employant cette stratégie, nous extrayons efficacement les valeurs de retour sans compromettre l'approche multitraitement.

Exemple de mise en œuvre

L'exemple suivant présente la mise en œuvre de variables partagées pour récupérer le retour valeurs :

import multiprocessing

def worker(procnum, return_dict):
    """worker function"""
    print(str(procnum) + " represent!")
    return_dict[procnum] = procnum

if __name__ == "__main__":
    manager = multiprocessing.Manager()
    return_dict = manager.dict()
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target=worker, args=(i, return_dict))
        jobs.append(p)
        p.start()

    for proc in jobs:
        proc.join()
    print(return_dict.values())
Copier après la connexion

Sortie :

0 represent!
1 represent!
3 represent!
2 represent!
4 represent!
[0, 1, 3, 2, 4]
Copier après la connexion

Cette approche nous permet de récupérer les valeurs de retour de la fonction de travail et de démontrer la communication transparente entre les processus dans le cadre multitraitement.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal