multithreading python-2.6 tcpserver

multithreading - ¿Cómo compartir datos entre hilos en este TCPServer de hilos?



python-2.6 (1)

Estoy trabajando en un proyecto que implica el envío de datos a través de TCP. Usando el ThreadedTCPServer ya puedo hacer eso. El hilo del servidor solo necesita leer cadenas de datos entrantes y establecer el valor de las variables. Mientras tanto, necesito que el hilo principal vea las variables cambiando de valor. Aquí está mi código hasta ahora, recién modificado del ejemplo de ThreadedTCPServer:

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()

Entonces, la forma en que debería funcionar es que el programa imprime constantemente el valor de x, y a medida que aparecen nuevos mensajes, el valor de x debe cambiar. Parece que el problema es que la x que se imprime en el hilo principal no es la misma x a la que se le asigna un nuevo valor en los hilos del servidor. ¿Cómo puedo cambiar el valor de x en el hilo principal de mi hilo de servidor?


Intenta compartir una Queue entre tus hilos.

Recursos utiles