Я работаю над приложением, использующим Python (3.4) и PyQt. Цель программы - управлять и анализировать большой объем данных - до ~ 50 двоичных файлов, которые могут иметь общий размер до 2-3 ГБ. Когда я пытался загрузить пару файлов в программу, он перестает отвечать на запросы во время загрузки, а затем занимает ~ 1,5 ГБ оперативной памяти только для продолжения работы. Мой вопрос довольно общий - каковы возможные методы в python/PyQt для обработки таких наборов данных?Python - управление большими данными
ответ
Вы могли бы рассмотреть формат hdf5, который может получить доступ с помощью h5py, pytables или другие пакеты питона. В зависимости от формата данных HDF5 позволяет вам эффективно получать доступ к данным на HD, что на практике означает, что вы можете сэкономить память. Недостатком является то, что это требует определенных усилий на вашей стороне в качестве программиста.
@deets получил это право ... разложите проблему.
Вопрос очень широк ... поскольку он не описывает потребности в нижнем течении. Поэтому позвольте мне поделиться каркасом, который мне пришлось построить, чтобы работать с ... ключевым решением было использование HDF и создание некоторых сервисов вокруг структур данных в бункере ... он дал мне хорошее решение.
Мое приложение делится на
a) remote sources -> Collection Subsystem -> Bulkstore
b) Bulkstore -> BatchAnalysis -> dyanmicstore
c) dynamicstore -> webapp+visualization -> UI
Система сбора непрерывно собирать журналы с разных языков 30+, разбора XML и добавления строк в одном языке bulkstore HDF5 файл.
Размер bulkstore зависит от языка ... от 20G до < 1M ...
batchanalysis ('вычислительное ядро' @deets) предназначен для использования новейших ~ 12M события (память связанно) ,
Ключевым моментом является научиться структурировать объемный магазин ... в моем случае я делят массовый магазин на кварталы, указав главный индекс на все кварталы. Эти услуги подразделяются на следующие иерархии классов:
bulkstore (core HDF services)
+- dataset (manage datasets/directory within HDF)
+- appdata (my apps knowledge of logs across the datasets)
+- dynamicstore (output of batchanalysis are HDF's themselves)
Надеется, что это помогает ...
1 наконечник ... есть трюк для управления наборами данными в пределах HDF ... то есть. HDF с большими данными занимает время LONG, чтобы получить каталог наборов данных.
Если вам нужно обработать заинтересованы в создании Спарк решения для BatchAnalysis ...
Это невозможно ответить. Только очень общее предложение: разложите свою программу и создайте вычислительное ядро без каких-либо (Py) Qt, которые обрабатывают ваши 50 файлов. Пусть он работает, посмотрим, как он себя ведет, оптимизируйте. Затем подключите его к вашему GUI-приложению. Кроме того, с этими размерами процесса убедитесь, что вы используете 64-битный питон. – deets
Нет, я ценю комментарий. Я не ищу «исправление» или что-то в этом роде, просто некоторые предложения по рассмотрению и попытке реализовать, так что спасибо –
Предполагая, что файлы несжаты, объем дискового пространства и объем памяти будут одинаковыми для эффективных двоичных представлений , Какой анализ вы делаете, и как вы загружаете файлы? Большинство анализов можно сделать потоковым способом. Один из вариантов - загрузить один файл за раз и извлечь необходимую информацию для агрегации, только сохраняя это в памяти. – Mack