Comment partager des données entre threads dans ce filetée TCPServer?
Je suis en train de travailler sur un projet qui implique l'envoi de données via TCP. À l'aide de la ThreadedTCPServer je suis en mesure de le faire déjà. Le thread du serveur seulement besoin de lire entrant chaînes de données et définir la valeur de variables. En attendant, j'ai besoin de le thread principal pour voir les variables de changement de valeur. Voici mon code si loin, juste modifié à partir de la ThreadedTCPServer exemple:
import socket
import threading
import SocketServer
x =0
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
data = self.request.recv(1024)
# a few lines of code in order to decipher the string of data incoming
x = 0, 1, 2, etc.. #depending on the data string it just received
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
pass
if __name__ == "__main__":
# Port 0 means to select an arbitrary unused port
HOST, PORT = 192.168.1.50, 5000
server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
# Start a thread with the server -- that thread will then start one
# more thread for each request
server_thread = threading.Thread(target=server.serve_forever)
# Exit the server thread when the main thread terminates
server_thread.daemon = True
server_thread.start()
print "Server loop running in thread:", server_thread.name
while True:
print x
time.sleep(1)
server.shutdown()
Donc, la façon dont cela devrait fonctionner, c'est que le programme constamment imprime la valeur de x, et que de nouveaux messages arrivent dans la valeur de x doit changer. Il semble que le problème est que le x qu'il imprime dans le thread principal n'est pas le même x qui est en cours d'assigner une nouvelle valeur dans le fils de serveur. Comment puis-je changer la valeur de x dans le thread principal de mon thread du serveur?
- avez-vous essayé de mettre de l'instruction print dans le thread de travail?
Vous devez vous connecter pour publier un commentaire.
Essayer de partager un
File
entre votre fils.Ressources utiles