Re: [懸賞] python multiProcess 問題解法

作者: ntuleo (里歐)   2015-04-30 11:58:21
首先感謝大家的回答,感謝LiloHuang的長文解答
不過我目前還是沒有找到好的方法可以加速
試出來的結果都是變慢...
由於這問題實在卡我太久了,希望有人可以幫我想一下解法
如果能成功優化我的程式,我提供500元的獎賞
(太少可以再跟我說,我想對知道的人來說應該不會太花時間)
以下是我嘗試(但失敗,反而變慢)的程式
if __name__ == "__main__":
content = input_file(target).split("\n")
content = manager.list(content)
for files in source:
obj_grab.append((LogCatcher(files), content))
pool = Pool()
pool.map(transferConcat, obj_grab)
pool.close()
pool.join()
def concatMessage(LogCatcher, content):
for key in LogCatcher.dic_map:
regex = re.compile(key)
for j in range(len(content)):
for m in re.finditer(regex, content[j]):
content[j] += LogCatcher.index + LogCatcher.dic_map[key]
def transferConcat(args):
return concatMessage(*args)
obj_grab是一個list,裡面放不同file input產生的LogCatcher(一個自定義的object)
content是我要改的file,用manager()宣告是要讓不同process同時修改
我希望可以用並行化加速concatMessage
(我的理解是這樣最快,或是有其他更好的方法也可以)
應該以上的資訊就可以分析了
作者: ug945 (ug945)   2015-04-30 14:15:00
開多個manager.list() 存修改過的資料 最後再合併
作者: ccwang002 (亮)   2015-04-30 15:32:00
方便提供測資嗎?
作者: ntuleo (里歐)   2015-04-30 16:25:00
測資沒辦法提供抱歉,不過就是讀進來的string阿應該都一樣
作者: CaptainH (Cannon)   2015-04-30 19:47:00
你還是沒搞清楚,你的迴圈彼此有相依性,是不能平行化的

Links booklink

Contact Us: admin [ a t ] ucptt.com