Zieg, J. and Zawada, D.G., . Improving ESRI ArcGIS performance of coastal and seafloor analyses with the Python multiprocessing module.
Coastal research frequently involves the use of a GIS to analyze large areas for changes in response to major weather events, human action, and other factors. The GIS workflows used to conduct these analyses can be complex and sometimes require multiple days to complete. Long runtimes often exist even on modern high-powered workstations if the GIS software does not use parallel computing techniques, which prevents it from fully utilizing the capabilities of multicore processors. If a GIS application supports a programming interface that allows geoprocessing tools to be called from an external program, then GIS workflows can use parallel functionality embedded in that programming language to divide the load of a large workflow among multiple child processes. In ArcMap and ArcGIS Pro, this technique can be implemented by using the Python programming interface and the multiprocessing module in Python to run geoprocessing tools in child processes. This method was used in the Seafloor Elevation Change Analysis Tool (SECAT), a Python script written for ArcMap and ArcGIS Pro that calculates changes in seafloor elevation over time using two different digital elevation models. Running SECAT with between one and eight child processes on two different datasets improved execution times by at least a factor of 2.4. These results demonstrate that using the Python multiprocessing module can significantly accelerate a variety of time-consuming workflows.