利用multiprocessing多进程模块进行影像校正


前段时间用GP工具做了一个,见http://blog.csdn.net/mmll0927/article/details/77600908

现在目的一样,用GP工具虽然极大的简化了操作,但由于单进程是一个一个顺序处理的,在校正这种单个所需时间较长的工作,一个一个的顺序处理有些浪费时间了,便想到能否利用python标准库中的multiprocessing多进程模块,充分把电脑硬件用起来,提高效率。

import arcpy
import multiprocessing
import os
import string


def GetList(files):                
    img_name = arcpy.Describe(files[0]).baseName
    split_index = img_name.find(name_qian)
    img_name_qian = img_name[:split_index]
    img_name_hou = img_name_qian + name_houzhui+".img"    
    Output_img = os.path.join(save_folder,img_name_hou)
    Resamping_img= os.path.join(Resamping_folder,img_name_hou)    
    arcpy.WarpFromFile_management(files[0], Output_img, files[1], warp_type, resamping)   
    arcpy.Resample_management(Output_img, Resamping_img, resolution, resamping)

def main():
    img_GCP_list=[]
    for i in range(len(imglist)):
        img_GCP = [imglist[i],GCPlist[i]]
        img_GCP_list.append(img_GCP)

    #设置进程数量:
    pool = multiprocessing.Pool(processes=4)                       
    result = pool.map(GetList, img_GCP_list)        
    pool.close()
    pool.join()

#全局变量(GP工具输入):
imglist = string.split(arcpy.GetParameterAsText(0),";")
GCPlist = string.split(arcpy.GetParameterAsText(1),";")
save_folder = arcpy.GetParameterAsText(2)
warp_type = arcpy.GetParameterAsText(3)
resamping = arcpy.GetParameterAsText(4)
resolution = arcpy.GetParameterAsText(5)
name_qian = arcpy.GetParameterAsText(6)
name_houzhui = arcpy.GetParameterAsText(7)
Resamping_folder = arcpy.GetParameterAsText(8)

#运用multiprocessing时必须要有下面:
if __name__ == "__main__":
    main()

需要两个文件夹save_folder 和Resamping_folder ,用来输出校正后的影像和把校正后文件再重采样的影像。不过速度确实是快了很多,可以充分利用多核CPU,同时处理。

转载自:https://blog.csdn.net/mmll0927/article/details/77969752

You may also like...

退出移动版