python线程安全map_python中pool+map+arcgis's py module的并行问题

files=['E:/select/r0_51x47.txt',

'E:/select/r0_79x77.txt',

'E:/select/r0_89x65.txt',

'e:/select/r0_101x109.txt',

'e:/select/r0_104x88.txt',

'e:/select/r0_127x80.txt',

'e:/select/r0_139x136.txt',

'e:/select/r0_204x209.txt']

print ('')

print ('###################################')

pool_costtime_start= datetime.datetime.now()

pool = Pool()#len(files)

pool.map(ExtractRidge, files)

pool.close()

pool.join()

print ('Pool Cost time: '+\

str((datetime.datetime.now() - pool_costtime_start).seconds)+\

' seconds')

len(files)>CPU数(我的是win7+i5),执行过程中某个进程执行到arcgis提供的函数时,会无限期等待着,如下图:

我的解决方法是:直接设置Pool的大小,即

pool=Pool(len(files))

这样就不会出现之前的情况了,这是成功的结果

同样的,我还测试了用

pool=ThreadPool() 或者

pool=ThreadPool(len(files))

实现多线程的并行计算。这个就更糟糕了,提示:

提示的函数,z_limit是第三个参数,默认值为“”

arcpy.gp.Fill_sa(dem, fill, "")

但是,在指定进程数的情况下确没问题。我的问题是:

1. 对于CPU密集型的计算来说,进程数是否需要严格指定?例如我的第一个情况下,需要指定进程数才能运算成功,默认由计算机CPU个数来决定的情况就会down机;

2. 是否多线程对于CPU密集型的计算容易出错?因为我用的arcgis模块计算量都很大;

**请路过的大神多多指教!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值