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