Форум сайта python.su
Возникла необходимость загнать в массив числа float (~ 44 млн. чисел) из текстового файла, значения разделены пробелами. Файл ~600 Мб.
пробовал готовые функции:
scipy.io.read_array()
numpy.loadtxt()
numpy.fromfile()
pylab.load()
в каждом случае - длительное скачкообразное забивание памяти и вылет с ошибкой MemoryError.
самым простым оказалось
corn = zeros(43915080)
cnt = 0
for line in open(corn_file, ‘r’):
for k in map(float, line.split()):
corn = k
cnt += 1
но это строка за строкой, хоть и без загрузки всего файла
может есть более быстрые решения (без С конечно) ?
Офлайн
Я бы перегнал все в базу, а потом уже с ней работал. БД лучше справляется с огромными масивами данных. Да и функционал можно на уровне базы дописать, что б быстрее работало.
Офлайн
а если загнать его в строку и попробовать функцию frombuffer()?
Офлайн