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()
我开发了一个程序,试图在触摸控制器通过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()