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

看板Python作者 (十年一刻)時間9年前 (2015/05/01 11:59), 9年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/4 (看更多)
其實沒有完整的程式碼,以及可重現問題的測試資料,對於多數的人來說包括我自己 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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.219.36.31 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1430452740.A.F4E.html ※ 編輯: LiloHuang (61.219.36.31), 05/01/2015 12:28:28

05/02 20:29, , 1F
感謝你熱心的回應,我再想想
05/02 20:29, 1F
文章代碼(AID): #1LGle4zE (Python)
文章代碼(AID): #1LGle4zE (Python)