向bcolz选项卡追加数据的性能

2024-04-23 17:20:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始使用bcolz包,并在ctables上运行tutorial。使用fromiter函数创建表,即:

N = 100*1000
ct = bcolz.fromiter(((i,i*i) for i in range(N)), dtype="i4,f8", count=N, rootdir='mydir', mode="w")

速度很快,在我的电脑上大约需要30毫秒(2.7GHz Core i7带SSD存储),但是第二个示例:

^{pr2}$

很慢(45秒)。我可以通过不写入磁盘来接近fromiter时间(即删除rootdir='mydir', mode="w",但仍需2秒左右)。在

这个例子使用了很多非常小的附录,我想知道当一个人有很多数据时,这是否是推荐的用例。关于这些操作需要多长时间,并没有什么确切的数字,只是有很多建议说这个库的速度很快。在

我试着修改代码以将数据写入块中:

with bcolz.zeros(0, dtype="i4,f8", rootdir="mydir", mode='w') as ct:
    for i in range(10):
        ii = np.arange(10000) + 10000*i
        ct.append((ii,ii**2))

如果我不写磁盘,现在需要45毫秒到6毫秒。这似乎更符合我见过的bcolz案例的建议用途。在

我找不到很多关于写代码时需要阻塞的文档,所以我认为这可能是由于我的系统造成的?在


Tags: informoderange速度磁盘iidtype
1条回答
网友
1楼 · 发布于 2024-04-23 17:20:10
%timeit with bcolz.zeros(0, dtype="i4,f8", rootdir="mydir", mode='w') as ct: ct.append([np.arange(10000)+10000*i for i in range(10)])

100个回路,最好为3:3.82 ms/回路

相关问题 更多 >