Re: [懸賞] python multiProcess 問題解法
首先感謝大家的回答,感謝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
(我的理解是這樣最快,或是有其他更好的方法也可以)
應該以上的資訊就可以分析了
-----------------------------------------------------------------------------
下面是我本來的架構(純for loop)
if __name__ == "__main__":
content = input_file(target).split("\n")
for files in source:
obj_grab.append((LogCatcher(files)))
content = concatMessage(obj_grab,content)
def concatMessage(obj_grab, content):
for logCatcher in obj_grab:
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]
return content
麻煩大家幫幫忙了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.98.146.2
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1430366304.A.9B3.html
※ 編輯: ntuleo (175.98.146.2), 04/30/2015 11:59:31
推
04/30 14:15, , 1F
04/30 14:15, 1F
→
04/30 15:32, , 2F
04/30 15:32, 2F
→
04/30 16:25, , 3F
04/30 16:25, 3F
噓
04/30 19:47, , 4F
04/30 19:47, 4F
→
04/30 19:47, , 5F
04/30 19:47, 5F
※ 編輯: ntuleo (60.250.185.98), 05/01/2015 11:55:17
Python 近期熱門文章
PTT數位生活區 即時熱門文章