@olokki «Python не может быть вашим лучшим выбором» Я не думаю, что это каждое спорное утверждение, а остальная часть моего ответа действительно обращаются к оригинальному вопросу о том, как сделать это на Python.

жно, я начну с небольшого введения в мою проблему. Я пишу программу на Python, которая будет использоваться для пост-обработки различных физических симуляций. Каждое моделирование может создать до 100 ГБ на выходе. Я имею дело с различной информацией (например, позиции, поля и плотности, ...) для разных временных шагов. Я хотел бы иметь доступ ко всем этим данным одновременно, что невозможно, потому что в моей системе недостаточно памяти. Обычно я использую файл чтения, а затем выполняю некоторые операции и очищаю память. Затем я читаю другие данные, делаю некоторые операции и очищаю память.

Теперь моя проблема. Если я делаю это таким образом, то я трачу много времени на чтение данных более одного раза. Это займет много времени. Я хотел бы прочитать это только один раз и сохранить его для легкого доступа. Знаете ли вы метод для хранения большого количества данных, который действительно быстрый или не требует много места.

Я только что создал метод, который примерно в десять раз быстрее обычного открытого чтения. Но я пользуюсьcat (команда Linux) для этого. Это действительно грязный метод, и я хотел бы выкинуть его из своего сценария.

Можно ли использовать базы данных для хранения этих данных и получения данных быстрее, чем при обычном чтении? (извините за этот вопрос, но я не специалист по информатике, и у меня мало знаний о базах данных).

РЕДАКТИРОВАТЬ:

Мой код кошки выглядит примерно так - только пример:

out = string.split(os.popen("cat "+base+"phs/phs01_00023_"+time).read())
# and if I want to have this data as arrays then I normally use and reshape (if I
# need it)
out = array(out)
out = reshape(out)

Обычно я бы использовал метод NumPynumpy.loadtxt который нужно в то же время, как и обычное чтение.

f = open('filename')
f.read()
...

я думаю чтоloadtxt просто используйте обычные методы с некоторыми дополнительными строками кода.

Я знаю, что есть несколько лучших способов считывания данных. Но все, что я нашел, было очень медленным. Сейчас попробуюmmap и, надеюсь, у меня будет лучшая производительность.

Ответы на вопрос(3)

Ваш ответ на вопрос