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
Pour utiliser cette sous-classe :
twrv = ThreadWithReturnValue(target=foo, args=('world!',)) twrv.start() print(twrv.join()) # prints 'foo'
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!