2015-05-06 3 views
0

Я использую cython для синтаксического анализа больших gzipped-файлов. Есть ли какой-либо рекомендуемый способ использования библиотеки gzip в качестве файлового буфера для getline? Чтение строки из gzip в Python занимает слишком много времени.gzip в файле cython

Я хотел бы сделать это:

gzip_file = gzip.open(file_name, ¨rb¨) 

getline(line,n, gzip_file) 
+1

Преобладающая мудрость (от быстрого поиска Google) показывает, что самый быстрый способ чтения GZIP файлов в Python является вызовом 'zcat' из подпроцесса (он должен быть установлен на вашей системе, хотя). Вы также можете получить значительные преимущества от упаковки 'gzip_file' в' io.BufferedReader' и с помощью 'readline'. – DavidW

+0

спасибо, это было хорошее предложение, которое привело к моему решению. –

ответ

0

лучшее решение, которое я нашел использовал mkfifo и обработку, что с библиотеками C++.

os.mkfifo(file_name) 
subprocess.Popen("gunzip -c file.gz >" + file_name) 
cython.process(file_name) 
+0

Не могли бы вы поделиться тем, какие библиотеки C вы использовали? – DolphinGenomePyramids

+0

Я ошибся, я использую boost и C++ 11 для почти всего C++. –

Смежные вопросы