首页 > 解决方案 > 管理存储在文件中的python结构,就好像它们在内存中一样?

问题描述

我想以文件保留在磁盘上并且我的应用程序使用部分数据的方式管理许多文件。

我必须管理 2 种类型的文件 text-files/book-like, cvs-files/time-series。对于每个文件,我可能会生成多个尺寸缩小的副本,我想保留和缓存这些副本,因此我不必重新生成它们。

我可以看到两种方法:

1. create my own lib that uses mem-mapping
2. use tool as DASK

Dask 似乎是一个不错的选择,但我找不到 Bag 对象在循环和/或范围访问中迭代的方法,即

for i in bag_obj[2:10] :  .....

bag_obj[5:10]

我只能做 .take()

其次,有一种方法可以将 LIST 映射到文件并像普通列表一样执行列表操作,就好像它在内存中一样。


我想出了它,这是最好的:

def slice(self, pfrom, pto):
    assert self.bag is not None
    self.bag.take(pto)[pfrom:]

但不起作用,因为返回计算()值;(

标签: pythondaskmemmap

解决方案


这可能是一个解决方案?

from dask.bag.core import Bag
def slice(self, pfrom, pto): return self.take(pto)[pfrom:]
Bag.slice = slice

推荐阅读