开始下面正文之前,先说一个旧闻,ArcGIS Desktop 10.1 SP1 之后的版本中, 出现了一个不明觉厉的 新特性 —— 并行处理(Parallel Processing)

现在机器硬件越来越优,多核CPU的机器比比皆是,ArcGIS Desktop 32位单进程的模式不能充分的利用这些硬件资源,不能满足大数据量的处理要求。因此,Esri 改进了 ArcToolbox 中的部分工具,赋予了这部分工具并行处理的能力,确切地说是一小部分工具。

看到这里,问题可能来了,哪些工具支持并行处理呢?遗憾的是官方没有给出这个清单,这一点体验上确实不是很佳。但是我们还是有办法把它们找出来的,当我们在使用某个工具的时候,可以打开工具的帮助,在环境变量题目下找找有没有叫做 并行处理因子(Parallel Processing Factor)的项目。

也就是说,对于所有工具,只有其文档中环境变量下标明的环境变量参数才有效,而不是全部环境变量参数都有效!

下面我们来看看这个参数是如何设置和影响工具运行的。做一个简单的小测试,先找到一个支持并行处理的工具,例如 Build Pyramids And Statistics 工具,用其为数据量较大的镶嵌数据集的项目创建金字塔和统计值。在默认设置下,只要工具支持并行处理,工具会自动创建多个进程(ArcSOCP.exe)来执行任务。如下图所示:

在工具支持并行处理的情况下,设置并行处理因子(Parallel Processing Factor)这个参数又能做什么呢?

这个因子的数值,会决定工具运行使用的进程数量。一般,各工具在各个支持的环境中都有进程数量的内置默认值。我们可根据自己的数据情况、执行任务的类型和机器的可用资源对其进行更改。

一般是这四种设置方法:

参数 说明
留空 让工具自动决定使用进程的数量,这是 默认设置。*如上图中,我是8核的机器,工具自动开启了4个进程。
0 不跨多个进程进行操作。
n 使用指定的进程数量。
n% 使用百分比计算进程数量:进程数量 = 系统核数量 * (n / 100)

在填写的时候,是不是一定进程数越多越好呢?

引用帮助文档的原文供读者参考:

“指定的进程数量大于计算机所具有的核数量,可能导致性能损失。这是因为多进程将在一个核上争夺资源。为避免这样的竞争,可以指定低于 100% 的百分数值或少于计算机核数量的进程数量。”

当然也有例外情况:

“当所有进程均是对磁盘或企业级数据库连接的 I/O bound 时,您可通过指定多于核数量的进程以提高性能。例如将镶嵌数据集储存到企业级数据库时,添加栅格至镶嵌数据集 工具是 I/O bound。同样,构建概视图工具对磁盘的主要的 I/O bound。您可通过指定大于 100% 的百分比或大于计算机所含核数量的进程数量,来使用更多进程。例如,如果您有一台四核计算机,则指定 8 或 200%,这会跨八个进程展开操作。”


我做个了小测试,来对比对相同的数据做相同操作的时间消费。

测试环境:

Windows 8.1 Enterprise 64bit ;ArcGIS for Desktop 10.3

任务

为相同的一个镶嵌数据集的栅格项目创建金字塔和统计值,使用工具 Build Pyramids And Statistics ,金字塔重采样方法和压缩方法等参数均相同。

结果

√ 并行处理因子设置为 0,即不跨多进程,用时 39 minutes 3 seconds;

√ 并行处理因子设置为 8,即工具跨8个进程并行处理,用时 1 minutes 28 seconds 。

*时间是工具运行的消息提供的时间。

时间相差悬殊,虽然只是一个小测试,我们却能感受到并行处理相比单进程处理体验好了很多。