Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > архивирование больших файлов при помощи pyLZMA


Автор: pythonwin 6.6.2006, 12:38
Всем доброго времени суток!

Предлагаю рассмотреть код и прошу всех помочь "ускорить" работу скрипта, не снижать уровень сжатия (желательно даже увеличить, если можно):

Код

import pylzma
import time, profile
d1=time.time()
f=open('C:\\Big_File.my','rb',2**20*20)
f1=open('C:\\Big_File.my.7z','wb',2**20*20)
j=-1
while True:
##    s1=f.readline()
    s1=f.read(2**20*10)
    if not s1: break
    j+=1
    print j, len(s1)
    f1.write(pylzma.compress(s1, dictionary=25, fastBytes=128, literalContextBits=4, literalPosBits=2, posBits=2, algorithm=2, eos=1, multithreading=1, matchfinder='bt4'))
f.close()
f1.close()
d2=time.time()
print '-'*50
print d1, d2, d2-d1
raw_input()


размер файла C:\\Big_File.my == 800Мб
  

Автор: pythonwin 6.6.2006, 13:25
Для примера файл может быть создан:
Код

f=open('C:\\Big_File.my','w',2**20*100)
for x in range(3276800):
    f.write('1'*256+'\n')
    print x
f.close()


 

Автор: setq 6.6.2006, 14:32
Почему не pylzma.compressfile()? 

Автор: pythonwin 6.6.2006, 14:48
а чем он лучше? 

Автор: slav0nic 6.6.2006, 15:00
pythonwin, lzma жмёт хорошо, но поему зип быстрее... + зависит от типа сжимаемой инфы, короче если тебе важна скорость, то наверно лучше юзать gzip 

Автор: pythonwin 6.6.2006, 15:19
Приоритеты:
1) уровень сжатия
2) скорость
3) загрузка железа

Данные:
папка, в которой есть много разных файлов: и архивы, и рисунки, и текстовые файлы разных форматов (txt, doc, xls и др.)

 

Автор: setq 6.6.2006, 16:37

Цитата(setq @  6.6.2006,  14:32 Найти цитируемый пост)
Почему не pylzma.compressfile()?  


Цитата(pythonwin @  6.6.2006,  14:48 Найти цитируемый пост)
а чем он лучше?  


http://www.joachim-bauch.de/projects/python/pylzma/ до конца (примеры) 

Автор: J2A 7.6.2006, 06:25
Производительность упирается в pylzma.compress. Быстрее чем он сжимает данные, твой скрипт не заработает. 

Автор: pythonwin 12.6.2006, 06:57
Спасибо за помощь! smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)