Управлять структурами python, хранящимися в файле, как если бы они находились в памяти?

#python #dask #memmap

#python #dask #memmap

Вопрос:

Я хочу управлять многими файлами таким образом, чтобы файл оставался на диске, а мое приложение работало с частью данных.

Мне нужно управлять файлами 2 типов: текстовые файлы / книжные, cvs-файлы / временные ряды. Для каждого файла я могу сгенерировать несколько уменьшенных копий, которые я хочу сохранить и кэшировать, чтобы мне не приходилось их восстанавливать.

Я вижу два способа сделать это:

 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()

Во-вторых, есть ли способ сопоставить СПИСОК с файлом и выполнять операции со списком как обычный список, как если бы он находился в памяти.


Я придумал это, это лучшее :

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

но не работает, потому что возвращает значение computed() ; (

Ответ №1:

это может быть решением?

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