Какой самый быстрый способ записи данных в режиме реального времени в python с наименьшей потерей памяти - PullRequest
0 голосов
/ 14 марта 2020

На каждом шаге все oop У меня есть некоторые данные, которые я хочу сохранить в конце на моем жестком диске.

В одну сторону:

list = []
for i in range(1e10):
    list.append(numpy_array_i)

pickle.dump(list, open(self.save_path, "wb"), protocol=4)

Но я волнуюсь : 1_ Мне не хватило памяти, потому что из-за списка 2_Если что-то не работает, все данные будут потеряны. Из-за этого я также подумал о способе сохранения данных в режиме реального времени, например:

file = make_new_csv_or_xlsx_file()
for i in range(1e10):
    file.write_in_a_new_line(numpy_array_i)

Для этого я также беспокоюсь, что это может быть не так быстро, и я не уверен, какие из лучших инструментов могут быть. Но, вероятно, openpyxl - хороший выбор.

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

Я бы попробовал SQLite, поскольку он обеспечивает постоянное хранение на диске (-> без потери данных), и все же это быстрее, чем запись в файл, как показано в вашем вопросе, и обеспечивает более легкий поиск данных в случае неполного данные предыдущего запуска.

Тонкая настройка JOURNAL_MODE может еще больше увеличить производительность: https://blog.devart.com/increasing-sqlite-performance.html

0 голосов
/ 14 марта 2020

Запись в redis довольно быстрая. И вы можете прочитать из redis во втором процессе и записать на диск

...