Загрузка CSV-файла в массив NumPy memmap использует слишком много памяти - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь загрузить файл CSV 4,47 ГБ в отображенный в память массив NumPy.На машине GCP с 85 ГБ ОЗУ требуется ок.500 с, что приводит к массиву 1,03 ГБ.

Проблема в том, что он потребляет до 26 ГБ ОЗУ во время процесса загрузки файла в массив.Есть ли способ изменить следующий код, чтобы он занимал меньше ОЗУ (и, если возможно, времени) в процессе загрузки?

import tempfile, numpy as np

def create_memmap_ndarray_from_csv(csv_file): # load int8 csv file to int8 memory-mapped numpy array

    with open(csv_file, "r") as f:
        rows = len(f.readlines())
    with open(csv_file, "r") as f:
        cols = len(f.readline().split(','))

    memmap_file = tempfile.NamedTemporaryFile(prefix='ndarray', suffix='.memmap')
    arr_int8_mm = np.memmap(memmap_file, dtype=np.int8, mode='w+', shape=(rows,cols))

    arr_int8_mm = np.loadtxt(csv_file, dtype=np.int8, delimiter=',')
    return arr_int8_mm
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...