Re: [問題] python multiProcess效能很差?

看板Python作者 (Moo)時間10年前 (2015/05/17 20:03), 10年前編輯推噓5(502)
留言7則, 5人參與, 最新討論串4/4 (看更多)
先看code: 不負責任 沒有測試過 https://gist.github.com/Jackmoo/6f482b808aca64eb2285 上面各位說法非常中肯 沒有完整code, data, 我只能大略猜想你要幹嘛 我只能說這份code以你貼出來的範圍來看幾乎可以說是沒人可以維護的code 而且加上multiprocessing之後會更慘 =========================================================================== 首先我的假設已經寫在code最上面 如果content裡面有其他東西請自己修改 大略講解一下我知道的這東西 因為你的第二份code只是少個for loop 我就以那份為主來判斷 可能的(?)原始架構圖 https://gist.github.com/Jackmoo/651efab31dfb9228b44a 因為不知道那個LogCatcher.index是什麼 就只放上index 看到問題了嗎? 每一個最後得到的regex iter loop都會回去改 content[i] 你能確定你所有之後對於這個content加上的string不會影響到後面會發生的regex match? 而且每個key value都會做一次 +----------------------------------------------------------------------+ | 以下所有的code和看法都是在加上的string不會影響regex判斷的前提下完成 | +----------------------------------------------------------------------+ 以原本的code如果又加上multiprocess來說 對於每個後面的regex iter loop 可能會發生regex pattern 1 process對content[i]處理時 regex pattrern 2 process也對content[i]處理 就算你可以確保兩個process不會同時寫入content[i] 一樣可能會出現[1][2][1][1][1][2][2]這種狀況 而不是[1][1][1][1][1][2][2][2] 然後這串東西還要被之後的process 3 4 5胡搞... (是不知道你怎麼會有multiprocess會同時去修改一個東西是"大家都這樣做"的想法 特別是這個東西還是個主要變數) 上面的code是從每個regex pattern去切process 然後用新的outputContent[i]去存加上一堆東西的原始content[i] + ..... 但是卻有個問題 剛剛想到的 如果用pool map 最後的結果會是[[outputContent[0], ..],[outputContent[0],...] 的二維list 每一個result[i][0]都帶有原始的content資料(c+i1+v1+i2+v2....) 不能直接join 會變成 (c+i1+v1+.....+c+i1+v1+....) 這邊就請你自己修改了 請自己比對或是看有什麼其他方法 處理相依性本來就是multiprocessing會遇到的問題 就算不解決這個還是會有其他地方可能有問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.139.58 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1431864205.A.632.html ※ 編輯: ENEP (59.127.139.58), 05/17/2015 20:06:07

05/17 20:21, , 1F
好心人…但是他一定看不懂
05/17 20:21, 1F

05/17 20:22, , 2F
只能希望他找本書來看了
05/17 20:22, 2F

05/17 21:54, , 3F
請問那個原始架構圖是用什麼軟體畫的呀?
05/17 21:54, 3F

05/18 09:34, , 4F
05/18 09:34, 4F

05/18 10:54, , 5F
感謝,以前嘗試用手繪,沒兩下就放棄了,這東西讚呀
05/18 10:54, 5F

05/18 11:12, , 6F
推一個架構圖
05/18 11:12, 6F

05/18 19:49, , 7F
http://asciiflow.com/ 這東西好用!
05/18 19:49, 7F
文章代碼(AID): #1LM8EDOo (Python)
文章代碼(AID): #1LM8EDOo (Python)