Найти - Пользователи
Полная версия: Ускорение обработки двоичного файла
Начало » Python для новичков » Ускорение обработки двоичного файла
1 2 3 4 5 6 7 8
DcDr
Lexander
erl
теперь из массива не могу нормальные данные достать, все перековеркалось.
В файле не латиница есть? Может быть просто с кодировками проблема, а не с массивом.
так вроде разговор о двоичном файле. или я чего то пропустил?
PooH
Я по быстрому накидал сегодня, времени особенно не было, но там ошибка. Завтра, если будет время, доведу до ума. Может сами доделаете.
Это у меня тестовые данные генерятся
http://pastebin.com/rnkvLZiR
А вот проход по записям
http://pastebin.com/GJPWVigW
erl
PooH
Я по быстрому накидал сегодня, времени особенно не было, но там ошибка. Завтра, если будет время, доведу до ума. Может сами доделаете.
Это у меня тестовые данные генерятся
http://pastebin.com/rnkvLZiR
А вот проход по записям
http://pastebin.com/GJPWVigW
Спасибо, ваш код работает, но улучшений не много с 7 минут до 4 минут.
Идея классная, код меня поразил, спасибо, но вот операции ввода-вывода у Python очень медленные.
И скорее всего ни чего с этим уже поделать нельзя.
PooH
erl
И скорее всего ни чего с этим уже поделать нельзя.
Можно код получения отдельных записей вынести в расширение на С, а обрабатывать уже на питоне. Все зависит от ваших требований к задаче.
Ed
erl
Идея классная, код меня поразил, спасибо, но вот операции ввода-вывода у Python очень медленные.
Хмм. С чего это им быть медленными, если там все на Си написано?

И скорее всего ни чего с этим уже поделать нельзя.
Вы пробовали?
Андрей Светлов
Да erl уже вторую неделю жалуется на жизнь, а сам даже пример данных не выложил.
PooH был вынужден писать сначала генератор, а потом уже проверять на нем код.
Ed
Да я в курсе. Просто не только данных не видел, но и попыток попрофилировать предоставленный код.
Только выводы непонятно откуда “операции ввода-вывода у Python очень медленные” и, как результат безысход “скорее всего ни чего с этим уже поделать нельзя.”

PS: Если будет время сегодня из дому попробую нагенерить 500 метров данных и попрофилировать. А то ‘за державу обидно’ :)
PooH
Ed
PS: Если будет время сегодня из дому попробую нагенерить 500 метров данных и попрофилировать. А то ‘за державу обидно’ :)
Я уверен все это можно сильно ускорить. И кстати, там по моему где-то ошибка. Просто я сейчас реально могу этому делу выделить где-то три раза в день по десять минут, а соображаю я довольно медленно.
Андрей Светлов
Анекдот вспомнился.

Спрашивает молодой еврей:
- Ребе, помогите мне советом. Люблю девушку, хочу женится…
- Женись!
- Но она из бедной семьи, моя мама косо будет на это смотреть…
- Не женись!
- А я без неё жить не могу…
- Женись!
- И папа у неё - странный…
- Тогда крестись!
- Эээ. Зачем, ребе?
- Будешь не мне, а попу плешь проедать!
Ed
Помедитировал над кодом erl. Может я не до конца понял, что надо, но вот, что получилось: http://pastebin.com/BC7Hwy3W
Сгенерил 2000000 записей слегка модифицированным скриптом от PooH. Файл получился такой:
$ ls -la out
-rw-r–r– 1 ed ed 543895062 Feb 16 19:49 out

Вот результат запуска:
$ time ./test70.py out

real 0m54.015s
user 0m28.642s
sys 0m5.236s
Запуск с профайлером показал, что масса времени уходит на кодирование перед выводом.
Заменил цикл вывода на это:
    for rno, record in gen_record(inf):
outf.write("%d %d\n" % (rno, len(record)))
Вот результат:
$ time ./test70.py out

real 0m22.812s
user 0m20.954s
sys 0m1.015s
Дальше копать нет смысла. Может у меня код не то делает, что нужно. erl, гляньте, плз.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB