Python 处理数据和延迟

Python processing the data and delay

我开发了一个程序,试图在触摸控制器通过socket传输触摸坐标数据时驱动HMI。从下面的代码可以看出,length 是我收到的实时数据,它是一个显示 x,y,z 坐标的字符串列表。收到数据后,正在处理我将列表打印到 txt 文件,然后打开文件并拆分数据。问题是,拆分操作后,我得到的数据不再是实时的,有很大的延迟。例如,我通过在控制台实时打印它们来比较 "length""list",但它们没有不匹配...在此先感谢您的帮助!

socket_thread 函数的代码段:

def socket_thread():
    global X, Y, Xsave, Ysave
    PORT = 2001
    BUFFER_SIZE = 1024
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(('127.0.0.1', PORT))
    try:
        while True:
            s.sendall(b'true\n')
            length = s.recv(BUFFER_SIZE).decode()
            print(length, file=open("Eddie.txt", "a"))
            with open("Eddie.txt", "rt") as T:
                for buffer_line in T:
                    list = buffer_line.split('/')
                    if list[0] == 'True':
                        X = int(abs(round(float(list[1]))))
                        Y = int(abs(round(float(list[2]))))
            if not length:
                print("Recive_error\n")
                break
            len(length)
        s.sendall(b'end\n')
    except KeyboardInterrupt as e:
        s.sendall(b'end\n')
a = threading.Thread(name='socket_thread', target=socket_thread)
a.start()

如果不不断地重新处理整个文件,下面的方法是否可以完成同样的事情:

def socket_thread():
    global X, Y, Xsave, Ysave
    PORT = 2001
    BUFFER_SIZE = 1024
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(('127.0.0.1', PORT))
    try:
        with open("Eddie.txt", "a") as f:
            while True:
                s.sendall(b'true\n')
                length = s.recv(BUFFER_SIZE).decode()
                print(length, file=f)
                list = length.split('/')
                if list[0] == 'True':
                    X = int(abs(round(float(list[1]))))
                    Y = int(abs(round(float(list[2]))))
            if not length:
                print("Recive_error\n")
                break
            len(length)
        s.sendall(b'end\n')
    except KeyboardInterrupt as e:
        s.sendall(b'end\n')
a = threading.Thread(name='socket_thread', target=socket_thread)
a.start()