优化将ctypes float数组作为字节流写入python中的文件

时间:2015-09-24 14:24:17

标签: python arrays io ctypes writefile

我目前处理将数据写入文件的方式确实存在一个小问题。 数据存储为ctypes指针,指向已知大小(超过1亿)的浮点数组。 该文件本身应该是一个原始文件,它包含一定数量的标题信息以及上述卷数据的表示形式为unsigned int。

我目前所做的事情(打开文件并写入标题信息后)是:

texVolume = voxelData.from_address(ptr.as_pointer())
for pixel in texVolume.dataset_p.contents:
    f.write(c_uint8(int(pixel*255)))
f.close()

voxelData是一个ctypes结构,在变量“dataset_p”中保存(以及其他数据)ctypes float数组指针。这是我需要存储为unsigned int bytes的数据。

虽然我当前的实现工作只是找到,但速度非常慢,保存文件不应该像这样慢。

我已经尝试在循环之前完成从float到uint的整个转换,但我似乎无法让它与c_uint8转换一起使用,而是抛出TypeError(“只有lenght-1数组可以是转换为Python标量“)。

感谢您提供的任何帮助。如果有任何不清楚的地方,请不要犹豫。

0 个答案:

没有答案