【发布时间】:2018-06-14 09:56:20
【问题描述】:
我正在开发一个 python 程序,它可以让我与 FPGA 通信,通过 UDP 以大约 109 MB/s 的速度向我发送数据包。我现在有一个愿意解决的问题:
FPGA 每个数据包(二进制)向我发送 1400 个字节,我想将它们保存在一个文件中。现在这部分代码看起来像这样(它是多进程实例调用的函数):
filio = open('pack.bin',"wb")
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.bind(('',int(udportr.get())))
start = "Starting..."
q.send(start)
t = Timer(1, lambda:q.send(a))
t.start()
a = 0
while True:
data, addr = sock.recvfrom(1400)
if checksave.get() == 1:
filio.write(data)
if t.is_alive():
a +=1
else:
start_time = time.time()
print a
t = Timer(1, lambda:q.send(a)) # q refers to a Pipe
t.start()
a = 0
sock.close()
问题是,当我在大约 2 GB 后对文件进行写入时,速度会减慢很多,达到 30 MB/s。仅当我尝试保存文件时才会发生这种情况,否则速率保持恒定在 ~ 109 MB/s。 有什么建议吗?
【问题讨论】: