Partage de données entre threads en Python

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?

Merci!

source d'informationauteur David Lopez