Я пытаюсь загрузить файл 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