我正在开发一个需要通过TCP传输数据的项目。使用ThreadedTCPServer,我已经可以做到这一点。服务器线程只需要读取传入的数据字符串并设置变量的值。与此同时,我需要主线程看到这些变量值的变化。以下是我迄今为止的代码,仅从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()
那么这个程序应该的工作方式是不断打印 x 的值,随着新消息的到来,x 的值应该发生变化。问题似乎在于主线程中打印的 x 不是在服务器线程中被赋予新值的相同的 x。我该如何从服务器线程更改主线程中 x 的值?