플러시() (파일 2GB 이상을 시도했지만)가 전혀 압축되지 않은 데이터를 얻습니다.
압축기 작업에는 트릭이 있습니다.
귀하의 2GB + 파일이 임의적이지는 않았을 것입니다. 무작위 데이터가 잘 압축되지 않습니다. 질서 정연한 데이터는 매우 작은 크기로 압축됩니다.
>>> import bz2
>>> c=bz2.BZ2Compressor()
>>> import string
>>> data = string.printable*1024
>>> len(data)
102400
>>> c.compress(data)
''
>>> result= c.flush()
>>> len(result)
361
데이터가 공급되고, 예를 들어
는 잘 압축 이루어지는 패턴을 가졌다.
임의의 데이터가 필요합니다.
>>> import random
>>> c=bz2.BZ2Compressor()
>>> size= 0
>>> result= ''
>>> while result == '':
... data = ''.join(random.choice(string.printable) for i in xrange(1024*8))
... size += len(data)
... result= c.compress(data)...
>>> len(result)
754809
>>> size
901120
정말 무작위 데이터를 사용할 때 청크가납니다.
"플러시() (파일 2GB 이상을 시도했지만) 여전히 아무것도 압축되지 않은 데이터를 얻습니다." 이것은 무엇을 의미 하는가? 당신은 플러시와 함께 데이터를 얻을 수 있습니까? 그렇다면 귀하의 질문은 무엇입니까? 왜 실제로 청크를 반환하지 않는지 궁금하십니까? –
안녕하세요, 예, bz2compressor.compress()의 작은 덩어리를 원합니다 (문서에서이 함수가 척을 반환한다고 말합니다) –
청크를 반환하는 데 * 반드시 필요한 것은 아닙니다. 구현은 필요하지 않습니다. 컴퓨터에 너무 많은 메모리가있는 것처럼 보입니다. –