利用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,同时处理。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值