当前位置:  开发笔记 > 编程语言 > 正文

如何使用多线程在python中解压缩多个gz文件?

如何解决《如何使用多线程在python中解压缩多个gz文件?》经验,为你挑选了1个好方法。

我有多个gz文件,总大小约为120GB.我想将这些文件解压缩(gzip)到同一目录并删除现有的gz文件.目前我们正在手动执行此操作,并且需要更多时间来解压缩使用gzip -d .
有没有办法可以通过创建python脚本或任何其他技术并行解压缩这些文件.目前这些文件位于Linux机器上.



1> Andrea Corbe..:

您可以使用多处理池轻松完成此操作:

import gzip
import multiprocessing
import shutil

filenames = [
    'a.gz',
    'b.gz',
    'c.gz',
    ...
]

def uncompress(path):
    with gzip.open(path, 'rb') as src, open(path.rstrip('.gz'), 'wb') as dest:
        shutil.copyfileobj(src, dest)

with multiprocessing.Pool() as pool:
    for _ in pool.imap_unordered(uncompress, filenames, chunksize=1):
        pass

此代码将生成一些进程,每个进程将一次提取一个文件.

在这里我选择了chunksize=1,以避免一些文件大于平均值时停止进程.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有