浅尝辄止 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]