Найти - Пользователи
Полная версия: Ускорение обработки двоичного файла
Начало » Python для новичков » Ускорение обработки двоичного файла
1 2 3 4 5 6 7 8
Андрей Светлов
И как оно поможет, если у записей есть только терминатор - и нет длины?
Все равно нужно сканировать поток.
asv13
Андрей Светлов
И как оно поможет, если у записей есть только терминатор - и нет длины?
Все равно нужно сканировать поток.
Может я чего-то недопонял, но якобы имеется файл порядка 500 Мб, и длина каждой записи как раз расстояние между терминаторами ?

пример:

>>> from numpy import *
>>> a = memmap(r'c:\kam\w3\T3\W3_RT3.UNRST', uint16)
>>> a.shape
(138605462,)
>>> c = where(a==13)
>>> c[0][:10]
memmap([ 350427, 394751, 1280665, 1362469, 1765227, 2210903, 2253069,
2272839, 2717707, 2764369])
Lexander
erl
теперь из массива не могу нормальные данные достать, все перековеркалось.
В файле не латиница есть? Может быть просто с кодировками проблема, а не с массивом.
В том смысле, что полученные в массив символы (или часть их) нужно трактовать как строки в какой-то определенной кодировке.
erl
>>> from numpy import *
>>> a = memmap(r'c:\kam\w3\T3\W3_RT3.UNRST', uint16)
>>> a.shape
(138605462,)
>>> c = where(a==13)
>>> c[0][:10]
memmap([ 350427, 394751, 1280665, 1362469, 1765227, 2210903, 2253069,
2272839, 2717707, 2764369])
Ни чего из примера не понял, обясните словами , плиз, если не затруднит …
erl
Lexander
erl
теперь из массива не могу нормальные данные достать, все перековеркалось.
В файле не латиница есть? Может быть просто с кодировками проблема, а не с массивом.
В том смысле, что полученные в массив символы (или часть их) нужно трактовать как строки в какой-то определенной кодировке.
Да скорее всего с кодировками, но так все перековеркона, что не возможно разобраться что искать…
asv13
erl
Ни чего из примера не понял, обясните словами , плиз, если не затруднит …
Это пример того как в файле порядка 200 Мб вычислены позиции всех “меток” со значением =13. Довольно быстро, даже на моем ноуте. Просто пример, вашими условиями я не располагаю.
Isem
asv13
Это пример того как в файле порядка 200 Мб вычислены позиции всех “меток” со значением =13. Довольно быстро, даже на моем ноуте. Просто пример, вашими условиями я не располагаю.
А если метка находится на нечетной позиции? uint16 уже не прокатит.
erl
Здравствуйте
А если конец записи обозначается двумя байтами 0xff и 0x32 как быть длинна ведь произвольна, у меня получается так что максимальное время за которое я просто прохожу файл с выводом в другой файл выбранных записей 11 минут.

Если кто нибудь скажет как ускорить буду благодарен. Суть уже стоит в том, что сам по себе python, если он не умеет выполнять быстрее или я не умею написать более быстрый алгоритм, то вроде как уходим с разработкой на яву :-), а честное слово не хочется, это поновой изучать язык… значит тратить время, при чем личное … поможите плиз, если это возможно.
asv13
erl
Если кто нибудь скажет как ускорить буду благодарен.
Сам скрипт не покажете ?
Я бы еще pypy попробовал.
Андрей Светлов
Не нужен здесь pypy и Ява не правит в автоматическом режиме кривые руки.
Кстати, а характерная длина записи какая? Ну там сотня-другая байт или они обычно мегабайтные?
Да, и код - очень помогает выявить проблему.
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