lakers009 发表于 2015-4-20 07:22:36

浅尝辄止 Parallel Python

作者:Flyingis
    本文欢迎友情转载,但请注明作者及原文链接,严禁用于商业目的!
    最近在关注如何提升Python执行效率的问题,自己没有时间去深入研究,就直接选择了开源的Parallel Python,希望能够充分发挥多核CPU及集群环境的优势。
    Parallel Python是Python进行分布式计算的开源模块,能够将计算压力分布到多核CPU或集群的多台计算机上,能够非常方便的在内网中搭建一个自组织的分布式计算平台。先从多核计算开始,普通的Python应用程序只能够使用一个CPU进程,而通过Parallel Python能够很方便的将计算扩展到多个CPU进程中,使用官方网站上的一个例子。



import math, time
def isprime(n):
    """Returns True if n is prime and False otherwise"""
    if not isinstance(n, int):
      raise TypeError("argument passed to is_prime is not of 'int' type")
    if n < 2:
      return False
    if n == 2:
      return True
    max = int(math.ceil(math.sqrt(n)))
    i = 2
    while i1:
    ncpus = int(sys.argv)
    # Creates jobserver with ncpus workers
    job_server = pp.Server(ncpus, ppservers=ppservers)
else:
    # Creates jobserver with automatically detected number of workers
    job_server = pp.Server(ppservers=ppservers)
print "Starting pp with", job_server.get_ncpus(), "workers"
start_time = time.time()
# job1 = job_server.submit(sum_primes, (100,), (isprime,), ("math",))
job_server.submit(func(), ("D:\\Dev\\Python\\pp\\arcgis_test", ), (), ("arcgisscripting", "os"))
print "Time elapsed: ", time.time() - start_time, "s"
job_server.print_stats()

    时间几乎相同,没有太大变化,这也证明了最初的分析,看来提升ArcGIS Python应用效率还得从根本入手,当然也有可能是对Parallel Python和Python多线程处理了解不够深入,关于Parallel Python的问题,网上有一些说法:
    1.如果数据交换存在瓶颈,大数据量的应用效果不明显,或反而效率更低。
    2.高计算复杂度的应用效果不明显,ArcGIS Python中的分析计算恰好属于此类。

    当然测试脚本针对的主要是空间数据拷贝的操作,如果不死心还可以试试空间分析。接着深入,待续吧。
页: [1]
查看完整版本: 浅尝辄止 Parallel Python