[問題] 有關multiprocess的使用
各位先進好
小弟為剛開始接觸python的新手
因為目前在使用python撰寫呼叫androguard來對apk檔進行分析的程式
主要是要分析指定資料夾路徑底下中所有的檔案
例如./apk/00、./apk/01.......底下有很多子資料夾就不再贅述
因為裡面檔案大小不一,導致程式在分析的時候會極度耗時
所以我想應該要使用multiprocess
例如我開5個process,裡面的路徑指定./apk/01~05
這樣就可以用原來1/5的時間同時分析5個資料夾
我的程式如下:
def analyze(folderpath):
省略
if __name__ == "__main__":
aStart = time.time()
pool = multiprocessing.Pool(processes=4)
for URL in URLs:
pool.apply_async(analyze, (URL, ))
print '..............................'
pool.close()
pool.join()
aStop = time.time()
analyze_time = (aStop - aStart)
print 'ANALYZE APK ALL COMPLETE'
print '總共分析時間 =' + str(analyze_time)
我自己用一個分析需要正好1分鐘的檔案分別放在4個不同的資料夾來測試
URLs為存放'./apks/01','./apks/02'...的陣列
正常來說應該要4個同時進行
也就是說花費時間總共為60秒
但是我每次測所得出的時間仍然是60*4 =240秒
想請教這樣的寫法是否正確?
或是哪邊有問題呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.222.163
※ 編輯: pikachu8177 來自: 61.230.77.146 (12/21 01:10)
※ 編輯: pikachu8177 來自: 61.230.77.146 (12/21 01:10)
推
12/21 14:38, , 1F
12/21 14:38, 1F
→
12/21 14:46, , 2F
12/21 14:46, 2F
→
12/21 14:46, , 3F
12/21 14:46, 3F
自己研究了一下發現應該是用不太到coroutines
同時閱讀了multithread/process相關的文章
覺得應該是同時建立好幾個process,例如建立10個process
然後再呼叫process1~10.start()這樣
接著再用.join()防止主process完成後跳出
不曉得這樣的理解方式有沒有錯誤?
※ 編輯: pikachu8177 來自: 61.219.80.122 (12/23 16:42)
Python 近期熱門文章
PTT數位生活區 即時熱門文章
18
34