我想使用我的 8 核 16 GB ram 工作站快速 bzip2 压缩数百 GB 的数据。目前我正在使用一个简单的 python 脚本来压缩整个目录树,它使用 bzip2 和一个耦合到 os.walk 调用的 os.system 调用。
我看到 bzip2 只使用一个 cpu,而另一个 cpu 保持相对空闲。
我是队列和线程进程的新手。但我想知道如何实现这一点,以便我可以有四个 bzip2 运行线程(实际上我猜是 os.system 线程),每个线程可能使用自己的 cpu ,当他们 bzip 文件时从队列中耗尽文件。
我的单线程脚本粘贴在这里。
import os
import sys
for roots, dirlist , filelist in os.walk(os.curdir):
for file in [os.path.join(roots,filegot) for filegot in filelist]:
if "bz2" not in file:
print "Compressing %s" % (file)
os.system("bzip2 %s" % file)
print ":DONE"