Я хочу, чтобы bzip2 быстро сжимал несколько сотен гигабайт данных, используя мою 8-ядерную рабочую станцию 16 ГБ.В настоящее время я использую простой скрипт на python для сжатия всего дерева каталогов с помощью bzip2 и системного вызова os.s дополненного вызовом os.walk.
Я вижу, что bzip2 использует только один процессор, тогда как другой процессоростаются относительно простаивающими.
Я новичок в очереди и многопоточных процессах.Но мне интересно, как я могу реализовать это так, чтобы у меня могло быть четыре запущенных потока bzip2 (на самом деле я предполагаю, что потоки os.system), каждый из которых, вероятно, использует свой собственный процессор, который удаляет файлы из очереди при их bzip.1006 * Мой однопоточный скрипт вставлен сюда.
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"