Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl out of memory, Из 4 Гб оперативки использует 2 Гб 
:(
    Опции темы
Suppir
Дата 30.3.2011, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



На машине стоит 4 гб оперативки.

Есть 10 файлов общим весом 6 Гб. Их необходимо распарсить и составить 1 файл с отфильтрованными и объединенными данными (примерный размер будет около 1 Гб).

При парсинге я создаю 1 большой хеш хешей (или 10 маленьких хешей, или двумерный массив = один фиг). Когда использование памяти доходит до 2 Гб, то Perl вылетает с ошибкой "Perl out of memory", хотя еще как минимум 1 Гб оперативки свободен. 

Что делать? Если вместо оперативки писать с помощью SQLite в базу данных, то процесс тянется вечность. По идее, оперативки хватает, почему же Perl вылетает? :(
PM MAIL   Вверх
gcc
Дата 30.3.2011, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



можно попробовать использовать sysread, sysseek, sysopen
они будут по-байтово, по строчно считывать данные из файла
PM WWW ICQ Skype GTalk Jabber   Вверх
ming
Дата 30.3.2011, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 30.1.2009
Где: Новосибирск

Репутация: 2
Всего: 3



на 32-битной системе процессу доступно максимум 2 гб памяти.
PM MAIL ICQ Jabber   Вверх
Suppir
Дата 30.3.2011, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



ААА :(((
 smile 
smile 



Это сообщение отредактировал(а) Suppir - 30.3.2011, 20:01
PM MAIL   Вверх
Suppir
Дата 30.3.2011, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



А можно ли как-то обойти ограничение? Нужно 3 Гб на процесс. 
PM MAIL   Вверх
ming
Дата 30.3.2011, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 30.1.2009
Где: Новосибирск

Репутация: 2
Всего: 3



если не хотите привлекать БД, попробуйте http://search.cpan.org/~cangell/Tie-File-A.../File/AsHash.pm
PM MAIL ICQ Jabber   Вверх
vivu
Дата 30.3.2011, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 3.11.2009

Репутация: нет
Всего: нет



Если построчное считывание файлов вас устраивает, то воспользуйтесь Tie::File и работайте с файлом как с массивом. Стопов по памяти быть не должно.

Код

use Tie::File;

tie @my_file, 'Tie::File', '/tmp/file', memory => 20_000_000 or die "Tie::File Can't open file";
# работаете с файлом как с массивом строк
# ...
untie @my_file;

PM MAIL   Вверх
DurRandir
Дата 31.3.2011, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 335
Регистрация: 27.9.2009

Репутация: 14
Всего: 17



Комбинация cut/sort/uniq не подойдёт? В любом случае, придётся использовать какое-то внешнее хранилище, в том или ином виде. Проще, если результат точно поместится в оперативу, сложнее - если нет.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.