L'envoi de messages entre la classe threads Python
Quelqu'un sait comment je peux envoyer une variable (ou une variable) à partir de threadOne à threadTwo dans ce code, sans l'aide d'une variable globale? Si non, comment pourrais-je faire fonctionner une variable globale? Il suffit de définir avant les deux classes et utiliser la définition globale de la fonction d'exécution?
import threading
print "Press Escape to Quit"
class threadOne(threading.Thread): #I don't understand this or the next line
def run(self):
setup()
def setup():
print 'hello world - this is threadOne'
class threadTwo(threading.Thread):
def run(self):
print 'ran'
threadOne().start()
threadTwo().start()
Grâce
OriginalL'auteur Sam Heather | 2013-01-24
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les files d'attente pour envoyer des messages entre les threads dans un thread de façon sécuritaire.
Vous devez créer la File d'attente avant de commencer à les utiliser, donc oui, en dehors de/avant le thread de Classes.
OriginalL'auteur Gerald Kaszuba
Ici, vous allez, à l'aide de
Lock
.En utilisant la variable globale
data
.Le premier thread acquiert le verrou et d'écriture de la variable.
Deuxième thread attend de données et l'imprime.
Mise à jour
Si vous avez plus de deux threads qui ont besoin de messages à être passé autour, il est préférable d'utiliser
threading.Condition
.Pouvez-vous expliquer pourquoi?
Je serais intéressé de savoir pourquoi.
..parce que la serrure ne doit être prise pour le temps pris pour pousser un objet de référence sur la file d'attente, (et pop hors de nouveau). Il n'est pas nécessaire de garder toute serrure alors qu'un producteur est en cours de chargement dans les données ou si un producteur est en cours de traitement.
Les files d'attente automatiquement prendre soin de verrouillage pour vous. La manipulation de code de verrouillage vous-même ajoute une surcharge inutile à votre code (et de l'entretien/le débogage des cauchemars).
OriginalL'auteur ATOzTOA