浅尝辄止 Parallel Python

本文欢迎友情转载,但请注明作者及原文链接, 严禁用于商业目的

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

计算指定数值范围内所有素数的和,运行程序消耗时间为4.46900010109 s,程序运行结果和CPU使用率如下所示:

Sum of primes below 100000 is 454396537
Sum of primes below 100100 is 454996777
Sum of primes below 100200 is 455898156
Sum of primes below 100300 is 456700218
Sum of primes below 100400 is 457603451
Sum of primes below 100500 is 458407033
Sum of primes below 100600 is 459412387
Sum of primes below 100700 is 460217613
Time elapsed: 4.46900010109 s

将程序稍作调整,引入pp模块。

再次执行,任务管理器中两个CPU进程齐头并进,咱们不仅仅需要所有CPU努力干活,而且还需得到非常好的效果,通过简单的”time.time() – start_time”发现时间比之前缩短了近100%为2.26600003242,job_server.print_stats()能够得到更加详细的分析结果:

Starting pp with 2 workers
Sum of primes below 100 is 1060
Sum of primes below 100000 is 454396537
Sum of primes below 100100 is 454996777
Sum of primes below 100200 is 455898156
Sum of primes below 100300 is 456700218
Sum of primes below 100400 is 457603451
Sum of primes below 100500 is 458407033
Sum of primes below 100600 is 459412387
Sum of primes below 100700 is 460217613
Time elapsed: 2.26600003242 s
Job execution statistics:
job count | % of all jobs | job time sum | time per job | job server
9 | 100.00 | 3.9700 | 0.441111 | local

看到这样的测试结果,还来不及尝试多计算机的集群计算,就开始好奇该模块在ArcGIS Python空间计算中的应用效果。动手之前先想想问题吧,ArcGIS Python实际上是对粗粒度AO对象的调用,真正的计算压力实际上是在COM里面,而Parallel Python针对的是原生Python脚本中产生的计算量,所以应该不会有明显的性能提升,实践出真理,怎么都得写个Sample测试一番:将指定文件夹内所有personal geodatabase的空间数据拷贝到相应的file geodatabase中,以全国400万数据为例。

计算完成后消耗时间为73.453999962s,引入pp模块。

时间几乎相同,没有太大变化,这也证明了最初的分析,看来提升ArcGIS Python应用效率还得从根本入手,当然也有可能是对Parallel Python和Python多线程处理了解不够深入,关于Parallel Python的问题,网上有一些说法:

1.如果数据交换存在瓶颈,大数据量的应用效果不明显,或反而效率更低。

2.高计算复杂度的应用效果不明显,ArcGIS Python中的分析计算恰好属于此类。

当然,测试脚本主要是针对复制空间数据的操作,如果不放弃,可以尝试空间分析。让我们走得更深,然后继续。

[En]

Of course, the test script is mainly aimed at the operation of copying spatial data, and you can try spatial analysis if you don’t give up. Let’s go deeper and continue.

Original: https://www.cnblogs.com/flyingis/archive/2009/11/12/1601574.html
Author: Flyingis
Title: 浅尝辄止 Parallel Python

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/15835/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部