gpt4 book ai didi

python - 仅使用 C 风格的 fprintf() 语句的高效数据交换格式?

转载 作者:行者123 更新时间:2023-11-28 17:48:35 27 4
gpt4 key购买 nike

我需要将非常大的数据集(在 1-1000 万条记录之间,可能更多)从特定领域的语言(其唯一的输出机制是 C 风格的 fprintf 语句)传输到 python 。

目前,我正在使用 DSL 的 fprintf 将记录写入平面文件。平面文件如下所示:

x['a',1,2]=1.23456789012345e-01
x['a',1,3]=1.23456789012345e-01
x['a',1,4]=1.23456789012345e-01
y1=1.23456789012345e-01
y2=1.23456789012345e-01
z['a',1,2]=1.23456789012345e-01
z['a',1,3]=1.23456789012345e-01
z['a',1,4]=1.23456789012345e-01

如您所见,每条记录的结构非常简单(但是将 double float 表示为 20 个字符的字符串效率非常低!):

<variable-length string> + "=" + <double-precision float>

我目前正在使用 Python 读取每一行并将其拆分为“=”。

我能做些什么来使表示更紧凑,从而使 Python 的读取速度更快? fprintf 是否可以进行某种二进制编码?

最佳答案

呃……您每分钟从 Python 中读取此数据多少次?

因为在我的系统中,我可以在一秒钟内读取这样一个包含 2000 万条记录(~400MB)的文件。

除非您在有限的硬件中执行此操作,否则我会说您担心的太多了。

>>> timeit("all(b.read(20) for x in xrange(0, 20000000,20)  ) ", "b=open('data.dat')", number=1)
0.2856929302215576
>>> c = open("data.dat").read()
>>> len(c)
380000172

关于python - 仅使用 C 风格的 fprintf() 语句的高效数据交换格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com