![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| kulibinka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
Суть задачи: есть статьи. Их количество около 1 000 000.
Для каждой из них расчитывается куча данных, сохраненных в списках\словарях. Есть стандартная задача - пробежаться по всем этим данными и как-то их вместе обработать. Раньше я для каждой из статей найденные данные через модуль маршал сохранял в файликах, и при необходимости подтягивал. Но когда количество статей переваливает за несколько десятков тысяч начинаются проблемы (даже 10 000 файликов это уже довольно серьезная проблема Само собой напрашивается использование базы данных, но для каждого поля сериализировать и при необходимости рассериализировать списки\словари каждый раз это никому не нужный и большущий расход ресурсов. Пытался использовать pytables (которые в принципе создан для похожих задач), но он при сериализации коцает данные, и их после этого невозможно достать (да и сериализация затратная). Возможно, есть базы данных типа pytables, но которые напрямую позволяют без проблем и прозрачно сохранять данные родных питоновских типов... А возможно нужно использовать какой-то кардинально другой способ... Подскажите пожалуйста: как организовать сохранение и обход миллиона (или нескольких) списков\словарей на обычной машине? Это сообщение отредактировал(а) kulibinka - 19.3.2007, 03:28 |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
||||
|
||||
| Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: нет Всего: 40 |
а в shelve не пробовал класть?
-------------------- Бонифаций. |
|||
|
||||
| kulibinka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
Не пробовал... А разве при shelve.open(filename) не идет загрузка всего объекта в память? |
|||
|
||||
| Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: нет Всего: 40 |
shelve это надстройка над dbm (или gdbm), которая позволяет в этих базах хранить pickle обьекты. так что в памяти будут те обьекты которые ты считал.
-------------------- Бонифаций. |
|||
|
||||
| kulibinka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
Звучит по теме.
Спасибо за наводку, пошел разбираться. |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
||||
|
||||
| kulibinka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
Второй день думаю над вопросом, так и ничего и не придумал Можно по другому вопрос поставить? |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
а может просто озвучишь всю задачу пока вижу решение в том чтобы использовать субд + сериализацию использовать минимальное кол-во раз == один раз твои файлики просто записать в БД, если они имеют определенную структуру (думаю именно так) |
|||
|
||||
| kulibinka |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
да задачу я, кажется, озвучил в первом посте. Или там что-то неописано?
Ну, других решений я пока тоже не вижу. "сериализацию использовать минимальное кол-во раз" - ну а как сделать чтобы минимальное? Я ведь в файликах информацию сериализовал, но это некрасиво каждый раз ее рассериализировать - неоптимально...
А как связаны ZODB (насколько я понял, это база данных для zope) и эта задача? |
||||||
|
|||||||
| dvska |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 30.1.2006 Репутация: 6 Всего: 9 |
ZODB это pythonic ООДБ, да, изначально cозданная для Zope. Можно посмотреть также в сторону Durus http://www.mems-exchange.org/software/durus/ --------------------
|
||||
|
|||||
| kulibinka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
Спасибо за Durus, обязательно попробую.
|
|||
|
||||
| dvska |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 30.1.2006 Репутация: 6 Всего: 9 |
kulibinka, когда что-нибудь получится, поделись опытом!
--------------------
|
|||
|
||||
| kulibinka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
Как всегда - обязательно
|
|||
|
||||
| dvska |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 30.1.2006 Репутация: 6 Всего: 9 |
--------------------
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |