码迷,mamicode.com
首页 > 编程语言 > 详细

Python多线程常用包对比

时间:2017-02-11 12:30:41      阅读:369      评论:0      收藏:0      [点我收藏+]

标签:import   support   turn   运行   特质   []   free   submit   app   

python由于本身的特质,不能实现真正的多核并行运算,但是有一些第三方库较好地模拟了在多核环境下的并行运算,例如pp包以及multiprocessing,那么哪种更能充分利用多核心呢?

这里我简单做下对比,首先放上结论:multiprocessing是最优秀的。

在实测过程中,我的CPU是4核8线程,multiprocessing能充分利用多核运算优势,使得每一颗CPU核心的负载基本相当,并且能够在8个进程核心上负载相当,总体上占满CPU性能,而pp包只能利用好4颗物理核心,对剩下的4个虚拟核心基本无视。

下面的示例代码,供大家运行参考:

import multiprocessing
import time
import pp

def func(N):
    sum = 0
    for i in xrange(N):
        sum += i
    return sum

if __name__ == "__main__":
    multiprocessing.freeze_support()

    start = time.clock()
    for i in xrange(200000):
        sum = func(10000)
    print ">> normal: ", time.clock()-start

    start = time.clock()
    pool = multiprocessing.Pool(processes=8)
    jobs = []
    for i in xrange(200000):
        jobs.append(pool.apply_async(func, (10000, )))
    pool.close()
    pool.join()
    print ">> multiprocessing: ", time.clock() - start

    start = time.clock()
    jobs = []
    job_server = pp.Server()
    job_server.set_ncpus(8)
    for i in xrange(200000):
        jobs.append(job_server.submit(func, (10000, )))
    job_server.wait()
    print ">> pp: ", time.clock() - start
    job_server.print_stats()

  

Python多线程常用包对比

标签:import   support   turn   运行   特质   []   free   submit   app   

原文地址:http://www.cnblogs.com/shixiangwan/p/6388888.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!