저는 파이썬을위한 pigz
인터페이스에 대해 잘 모릅니다.하지만 정말로 필요한 경우 쓰기가 어렵지 않을 수 있습니다. Python's zlib
module은 임의의 청크를 압축 할 수 있으며, the pigz
man page은 이미 압축 및 출력 형식을 병렬화하기위한 시스템을 설명합니다.
당신이 정말로 병렬 압축을해야 할 경우 대규모 IPC 비용이 발생하지 않을 수 있도록, a는 multiprocessing
API의 스레드 백업 버전 multiprocessing.dummy.Pool.imap
(multiprocessing.dummy
에 싸여 덩어리를 압축 zlib
를 사용하여 해당 pigz
입니다 구현할 수 있어야한다 청크를 직원들에게 보내거나 직원들로부터 청크를 보내어) 압축을 병렬화합니다. zlib
은 CPU 바운드 작업 중 GIL을 해제하는 몇 가지 기본 제공 모듈 중 하나이므로 스레드 기반 병렬 처리의 이점을 실제로 누릴 수 있습니다.
실제적으로 압축 수준이 그만큼 높지 않으면 I/O는 종종 실제 압축과 비슷한 (대략 크기 정도) 비용입니다. 데이터 소스가 실제로 압축하는 것보다 빠르게 스레드를 공급할 수없는 경우 병렬 처리를 많이하지 않을 것입니다.
표준 라이브러리의 압축 모듈은 * pure python *이 아닙니다. 살펴 본다면 공유 라이브러리 (C로 작성된)에 대한 인터페이스임을 알 수 있습니다. –
그리고 이제는 'gzip'을 퇴역시킬 때입니다. 새로운'zstd' 압축은 gzip보다 [일반적으로 더 빠릅니다.] (http://rsmith.home.xs4all.nl/miscellaneous/evaluating-zstandard-compression.html) 작은 압축 파일을 만듭니다. –
@RolandSmith : 물론, 파이썬 인터페이스도 없다. 'gzip'보다 빠르지 만, 더 빨리 압축 할 수있는 옵션이 많이 있습니다. 'gzip'은 호환성 문제로 인해 적어도 부분적으로 고수합니다; 10 년이 넘은 하드웨어/소프트웨어가있는 시스템에서 압축을 풀 수 있으며 기본적으로 설치되어있을 것입니다 ('bz2'는 거의 널리 보급되어 있으며,'xz'가 거기에 도달하고 있습니다). 데이터를 여러 당사자에게 배포하려면 이동성과 압축률이 속도보다 중요합니다. 일시적인 압축의 경우 속도가 압축률보다 높기 때문에 'lz4'또는 'lzo'가 'zstd'를 초과 할 수 있습니다. – ShadowRanger