Maison > développement back-end > Tutoriel Python > Comment puis-je récupérer les valeurs de retour des threads Python ?

Comment puis-je récupérer les valeurs de retour des threads Python ?

Barbara Streisand
Libérer: 2024-12-17 06:10:26
original
575 Les gens l'ont consulté

How Can I Retrieve Return Values from Python Threads?

Accès aux valeurs de retour à partir des threads

Lorsque les threads sont créés en Python, leur fonction cible peut renvoyer une valeur. Cependant, récupérer cette valeur de retour du thread principal n'est pas simple en utilisant les méthodes standard.

Une option consiste à transmettre un objet mutable, tel qu'une liste ou un dictionnaire, au thread et à stocker le résultat dans un emplacement désigné. . Cette méthode nécessite de transmettre des arguments supplémentaires au thread et de maintenir la connexion entre le thread et l'objet.

Une autre approche consiste à sous-classer la classe Thread et à remplacer les méthodes run et join. Dans la méthode run remplacée, la valeur de retour de la fonction cible est stockée dans un attribut privé au sein de la sous-classe. La méthode de jointure remplacée renvoie la valeur stockée dans cet attribut.

Voici un exemple utilisant la sous-classe ThreadWithReturnValue :

class ThreadWithReturnValue(Thread):
    
    def __init__(self, group=None, target=None, name=None,
                 args=(), kwargs={}, Verbose=None):
        Thread.__init__(self, group, target, name, args, kwargs)
        self._return = None

    def run(self):
        if self._target is not None:
            self._return = self._target(*self._args,
                                                **self._kwargs)
    
    def join(self, *args):
        Thread.join(self, *args)
        return self._return
Copier après la connexion

Pour utiliser cette sous-classe :

twrv = ThreadWithReturnValue(target=foo, args=('world!',))

twrv.start()
print(twrv.join())  # prints 'foo'
Copier après la connexion

While cette méthode est efficace, elle nécessite de personnaliser la classe Thread, ce qui peut ne pas être souhaitable dans tous les scénarios. En fin de compte, la meilleure approche dépend des besoins et exigences spécifiques de l'application.

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