8コア、16 GBのRAMワークステーションを使用して、数百ギガバイトのデータをすばやくbzip2圧縮したいと考えています。現在、私は単純なpythonスクリプトを使用して、bzip2とos.walk呼び出しに結合されたos.system呼び出しを使用してディレクトリツリー全体を圧縮しています。
bzip2は単一のCPUのみを使用し、他のCPUは比較的アイドル状態のままであることがわかります。
私はキューとスレッド化されたプロセスの初心者です。しかし、4つの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"