【华为】linux使用多线程执行地理处理脚本的问题

SUSE操作系统上,如何利用ArcGIS for Server的Python实现多线程GP运行?
已邀请:

张赛

赞同来自:

【解决办法】:
首先,在SUSE操作系统上,ArcGIS for Server自带的Python脚本命令位于【ArcGIS for Server安装目录】下的tools目录中,因此,对于Python脚本的执行,需如下运行:
cd /home/arcgis/arcgis/server/tools
./python /home/arcgis/pytest.py

其次,由于ArcGIS for Server中Python的安装和环境配置与常规的Python不同,因此,在处理多线程的时候,只能调用multiprocessing.Process方法循环实现批处理。
下面是一段简单的python片段,用于实现对同一sde文件并发复制5份的逻辑:



import arcpy
import multiprocessing
import time

# Specify the output workspace
workspace = Z://home//ags103//output
arcpy.env.workspace = workspace
# Specify the output data
shpList=[a1.shp,a2.shp,a3.shp,a4.shp,a5.shp]
# Define the function
def convertDatatoShp(outShp):
t_start=time.clock()
inputData=Z://home//arcgis//sde131.sde//SDE.point
arcpy.CopyFeatures_management(inputData,outShp)
arcpy.AddMessage(outShp + is completed in %s seconds %(time.clock()-t_start))

if __name__ == ''__main__'':
jobs = []
for shpName in shpList:
p = multiprocessing.Process(target=convertDatatoShp, args=(shpName,))
jobs.append(p)
p.start()

要回复问题请先登录注册