Re: [问题] python multiProcess效能很差?

楼主: LiloHuang (十年一刻)   2015-05-01 11:58:57
其实没有完整的程式码,以及可重现问题的测试资料,对于多数的人来说包括我自己 XD
我相信很难隔空抓药看出性能瓶颈,你的程式大致上看来有其他板友提到的诸多问题,
设计上没有满足平行程式设计的诸多条件,你得多仔细琢磨大家的意见。
以下的范例是随机产生一些 UUID 字串,然后把字串相接起来,跟你的问题有点类似
在我的桌上型电脑(4 cores),平行版本耗费 3.35 秒,循序版本耗费 12.17 秒。
希望你看完之后会有一些想法,你也可以考虑使用 pool.apply_async 的作法,不一定
要侷限在使用 pool.map 的写法上,祝你顺利!
# coding=Big5
from multiprocessing.pool import Pool
import uuid
import datetime
def handleTask(uuid_gen):
return ''.join([uuid_gen().hex for i in xrange(16384)])
if __name__ == '__main__':
start = datetime.datetime.now()
tasks = [uuid.uuid4 for i in xrange(64)]
enable_multiprocess = True # 改这个来切换循序跟平行
if enable_multiprocess:
pool = Pool()
result = ''.join(pool.map(handleTask, tasks))
else:
result = ''.join([handleTask(task) for task in tasks])
# 由于 UUID 会产生随机字串,在这边确认两个版本长度相同即可
print 'result length: ', len(result)
print datetime.datetime.now() - start
作者: ntuleo (里欧)   2015-05-02 20:29:00
感谢你热心的回应,我再想想

Links booklink

Contact Us: admin [ a t ] ucptt.com