2015-05-06 49 views
0

我正在使用cython来解析大的gzip文件。有没有推荐的方法来使用gzip库作为文件缓冲区来获取? Python中gzip的readline需要很长时间。gzip在cython文件中

我想做到这一点:

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

getline(line,n, gzip_file) 
+1

流行的看法(从快速谷歌搜索)表明,在Python中读取gzip文件的最快捷方式是通过从子进程调用'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

我错过了,我几乎所有的C++都使用boost和C++ 11。 –