У меня есть файл bad_orders.csv размером приблизительно 16 ГБ, который нужно прочитать в массив с массой памяти 58 ГБ.
ubuntu@ip-172-31-22-232:~/Data/Autoencoder_Signin/joined_signin_rel$ free -g
total used free shared buff/cache available
Mem: 58 0 58 0 0 58
Swap: 0 0 0
Когда я запускаю следующую команду, задание неоднократно прерывалось:
import numpy as np
arr = np.genfromtxt('bad_orders.csv', delimiter =',', missing_values='',dtype='float32')
Терминал показывает, что использует непропорциональную память:
ubuntu@ip-172-31-22-232:~$ free -g
total used free shared buff/cache available
Mem: 58 42 12 0 3 16
Swap: 0 0 0
Затем я попытался сэмплировать 10000 строк из исходного файла и проверить использование памяти:
In [7]: samples = np.genfromtxt('samples.csv',delimiter=',',
missing_values='', dtype='float32')
In [8]: samples.nbytes
Out[8]: 16680000
Образец массива NumPy показывает размер 0,017 ГБ.Всего мой файл содержит ~ 8M строк, поэтому, если использование памяти масштабируется линейно, большой массив numpy должен занимать 13 ГБ памяти.Почему на чтение всего файла уходит более 50 ГБ?