在Python文件中写入这么多值的更好方法(设备内存不足)

在Python文件中写入这么多值的更好方法(设备内存不足),python,file,data-acquisition,Python,File,Data Acquisition,我对Python中的文件输出有一个问题。 我正在设计一个软件,可以读取3个传感器的值。 每个传感器在1秒内读取100个值,在每个过程之间,我必须将它们打印到文件中 time_memory = [k + i/100 for i in range(100)] # dividing 1 second into 100 intervals x = [100 elements] y = [100 elements] z = [100 elements] 下面是写入文件的代码 for i in range

我对Python中的文件输出有一个问题。 我正在设计一个软件,可以读取3个传感器的值。 每个传感器在1秒内读取100个值,在每个过程之间,我必须将它们打印到文件中

time_memory = [k + i/100 for i in range(100)] # dividing 1 second into 100 intervals
x = [100 elements]
y = [100 elements]
z = [100 elements]
下面是写入文件的代码

for i in range(self.samples):
    self.time_memory[i] = file_time + self.time_index[i] 
    f.write("{0} {1} {2} {3}\n".format(self.time_memory[i], x[i], y[i], z[i]))
因此,文件中的结果如下所示

time_value, x, y, z
time_value, x, y, z
...
但是,当测量时间超过8000秒时,软件停止。 我认为这是由于太多的数据设备必须进行,因为我使用的设备是一种旧的。我无法更改设备,因为计算机已连接到NI DAQ设备


我试图找到许多替代方法来更改上面的代码,但我找不到。有人能帮我解决这个问题吗?

一个建议是以二进制模式写入数据。这应该比文本模式快,它也需要更少的空间。因此,您必须以二进制模式打开文件,如下所示:

f = open('filename.data', 'wb') 

根据python版本的不同,格式化字符串可能已经是二进制的。因为我们不知道瓶颈是CPU还是内存,所以显式使用二进制模式可能会更快。还可以尝试避免使用字符串的.format方法,并通过四个连续的f.write调用逐个写入四个值。我敢打赌,导致可能内存不足情况的不是您的文件处理。请在请求调试帮助时包括完整的回溯,但是,在编写之前,您是如何存储测量值的。不确定我是否理解正确,但是,您不能每隔一秒编写一批10-30秒的测量值吗?当测量时间超过8000秒时,软件会停止两个问题:a您的python脚本如何填充self.samples?b当软件停止时会发生什么?你有没有看到一个例外,一个无声的挂起,或者其他什么?请用这些信息更新您的问题。实际上,我使用的是国家仪器公司的数据采集设备。Is型号是NI-6281,我将上传关于这个问题的错误消息。感谢您对Floran Gmehlin的大量帮助,我认为这不会有任何区别,因为我必须使用for循环多次生成该格式的time_值x,y,z\n。有没有其他方法可以在没有for循环的情况下以该格式或类似格式编写?再次感谢你们的帮助