第8页
第4排
并行处理是对多个进程的工作划分。现代计算机有多个CPU核心,在这些核心上分散工作可以充分利用可用的计算能力。
FME中的并行处理是指FME引擎将其工作划分为多个工作进程。工作区作者决定何时使用并行处理以及应该创建多少个进程。然后操作系统决定如何将资源分配给这些进程。
FME中的并行处理应用于定制变压器。(在2019年以后的FME中,请它现在是找到并行处理选项的唯一地方)。本质上,通过自定义转换器的每一组功能,在单独的过程中进行。当数据退出自定义转换器时,它会重新组合成一个组。
因为自定义转换器被视为处理任务的一个单元,它包含的各个变压器都包含在每个并联过程中。这允许作者在一个设置中设置多个要并行处理的变压器。它还将所需流程的数量降至最低,因此,启动和停止进程的开销更少,来回传递数据。
并行处理的定义是组,请然而,有些变压器是基于特性的,不基于组,因此不适合并行处理。然而,自定义转换器充当基于组的包装器,提供了一种基于特征的变压器并行处理的方法。
FME中的每个并行过程都使用自己的数据组,其中该组由属性定义。首先,必须在自定义转换器定义的导航器窗口中选择并行处理级别:
之后,使用Transformer的参数对话框选择要分组的属性:
这里,用户使用ZoneCategory属性定义组进行并行处理。
以下步骤是如何在自定义转换器上使用并行处理的示例。
1.启动FME Workbench并打开附加的工作区模板:
工作区正在读取一组公园(空间)数据。它使用neighhoodName作为分组参数来计算每个公园(区域计算器和统计计算器)的平均大小。这将创建每个街区的平均公园大小。
然后工作空间将相邻的公园多边形分解在一起,稍微缓冲一下,以确保相邻的公园合并。第二个缓冲区缩小了公园的大小。
这里可以并行处理,其中每个邻域都作为一个单独的过程进行处理。这是因为所有基于组的变压器(统计计算器和分解器)都使用相同的组。
其他变压器是基于特性的,因此分组并不重要。
2.第二步。选择画布上的所有五个变压器(不包括任何检测变压器)。按ctrl+t(或从菜单栏中选择“变压器>创建自定义变压器”)。
当提示时,输入一个简单的名称,如ParkProcessor…
然后单击“确定”关闭对话框并创建自定义转换器。
三。在自定义转换器定义(活动选项卡应标记为ParkProcessor)中,浏览导航器窗口以查找并行处理参数。在变压器参数下。
双击参数,选择“中等”作为处理级别:
单击“确定”,并行处理将打开。
第四章。返回主画布(活动选项卡为主)。单击齿轮按钮打开ParkProcessor Transformer的参数对话框。在group by参数中,选择neighhoodName作为并行处理的属性:
现在,跑步时,自定义转换器将为每个邻居创建单独的进程。多个进程将并行运行(中等处理,每个CPU内核一个)。
5.注意到,在工作区和上面的屏幕截图中,已经有了neighhoodName的参数。
回想一下,FME会自动发布自定义转换器中使用的所有属性。这使得变压器可以在多个地方使用,其中(在本例中)“neighhoodName”可能不可用。因此,当创建自定义转换器时,FME会自动生成第一个发布的参数,第二次激活并行处理。
我们两者都需要吗?好,这取决于邻居名称的使用位置。可以删除Group By参数中对它的任何引用,因为整个自定义转换器现在是一个大组。
让我们把这些参考资料整理一下。返回自定义转换器定义。
打开StatisticsCalculator参数对话框并取消设置分组依据,取消选择邻居名称。对溶解变压器重复此过程:
检查AreaCalculator和BuffererTransformer中neighhoodName属性的其他用途。没有用,我们可以删除提示输入该属性的用户参数。为此,打开输入端口的参数对话框,取消选中邻居名称:
这告诉FME变压器不再需要该属性(并行处理除外)。并且可以删除用户参数提示。
6.检查自定义转换器的参数对话框。运行工作区。输出与之前相同,但是,有了并行进程,运行速度可能会快得多。
最后一点有趣的是:虽然基于特征的变压器没有组来并行处理,它们仍然是并行处理的。这是另一种提高性能的方法。
?2019安全亚搏在线软件公司|法律