Python-эквивалент вывода файла по конвейеру в gzip в Perl с использованием конвейера

Мне нужно выяснить, как записать вывод файла в сжатый файл на Python, аналогично двухстрочному файлу ниже:

open ZIPPED, "| gzip -c > zipped.gz";
print ZIPPED "Hello world\n";

В Perl это использует Unix gzip для сжатия всего, что вы печатаете в ZIPPED-дескриптор файла "zipped.gz".

Я знаю, как использовать import gzip для этого в Python следующим образом:

import gzip
zipped = gzip.open("zipped.gz", 'wb')
zipped.write("Hello world\n")

Однако это очень медленно. Согласно профилировщику, использование этого метода занимает 90% времени выполнения, поскольку я записываю 200 ГБ несжатых данных в различные выходные файлы. Я знаю, что файловая система может быть здесь частью проблемы, но я хочу исключить ее, используя вместо этого сжатие Unix / Linux. Частично это связано с тем, что я слышал, что распаковка с использованием этого же модуля также выполняется медленно.

9
задан aganders3 28 November 2011 в 22:22
поделиться