0
我是新來的並行處理在python。我在下面有一段代碼,它遍歷所有目錄並解壓縮所有tar.gz文件。但是,這需要相當長的一段時間。Python並行處理解壓文件
import tarfile
import gzip
import os
def unziptar(path):
for root, dirs, files in os.walk(path):
for i in files:
fullpath = os.path.join(root, i)
if i.endswith("tar.gz"):
print 'extracting... {}'.format(fullpath)
tar = tarfile.open(fullpath, 'r:gz')
tar.extractall(root)
tar.close()
path = 'C://path_to_folder'
unziptar(path)
print 'tar.gz extraction completed'
我一直在尋找通過一些職位多和JOBLIB軟件包,但我還是不太V清除如何修改我的腳本運行並行。任何幫助表示讚賞。
編輯:@tdelaney
感謝您的幫助,令人驚訝的是,修改後的腳本花兩倍的時間來解壓縮一切(60分鐘比較原始腳本到30分鐘)!
我看了一下任務管理器,看起來,雖然使用了多核,但CPU使用率卻很低。我不確定爲什麼會這樣。
哦,我想你的例子終於弄清楚了〜lemmi試試腳本! – Jake
嗯我有一個錯誤:「SyntaxERror:無效的語法。」 「pool.map(unziptar,my_files,chunksize = 1)」你知道爲什麼嗎? – Jake
啊啊,那個右括號...我可以再問一個問題嗎?我在windows上運行,腳本變得瘋狂了〜並且不停地提示添加「if __name__ =='__main__':freeze_support()」。該消息是「試圖在當前進程完成其啓動階段之前開始一個新進程。」你會知道如何實現這個?再次感謝您的幫助。 – Jake