zoukankan      html  css  js  c++  java
  • Python多线程常用包对比

    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()
    

      

  • 相关阅读:
    为什么需要配置环境变量
    Highcharts使用简例 + 异步动态读取数据
    使用SQL检测死锁
    2015.12.21-2015.12.25单词
    SQL Server锁定【2015.12.17】
    SQL SERVER 并发【2015.12.16】
    SQL闲杂知识点汇总【2015年12月】
    键和约束【2015.12.11】
    [笔记]聚集索引和非聚集索引相关知识点
    论Top与ROW_NUMBER读取第一页的效率问题
  • 原文地址:https://www.cnblogs.com/shixiangwan/p/6388888.html
Copyright © 2011-2022 走看看