在python2.7脚本中,第一个用numpy
数组处理大数据块的多处理代码。这基本上是图像平面和笛卡尔(世界)平面之间的投影光线帧块。这部分叫做poo1
,工作正常。你知道吗
在脚本的后面,我尝试重新生成多处理代码,用这个投影光线frameblock投影很多图像。你知道吗
似乎只有4到6个工人在工作,但他们都准备好了工作填充数据。pool2
创建了worker,它们的内存使用率增长缓慢,其中只有6个在使用CPU。你知道吗
注意事项:
参数信息:
代码简化如下所示:
def georef(paramsGeoRef):
#Pseudo workflow
"""
- unpack arguments, Frameclock, A1,A2, B1, B2, fileName, D1, D2, D3, P1, P2 <== paramsGeoRef
- Loading tif image
- Evergy convertion
with function and P1, P2
- Proportional projection of the image
- Frameclock, A1, A2
- Evergy convertion
with function and P1, P2
- Figure creation
- Geotiff creation
- export into file figure, geotiff and numpy file
"""
return None
if __name__ == '__main__':
paramsGeoRef = []
for im in imgfiles:
paramsGeoRef.append([Frameclock, A1, A2, B1, B2, fileName, D1 , D2 , D3 , P1 , P2])
if flag_parallel:
cpus = multiprocessing.cpu_count()
cpus = cpus - 1
pool2 = multiprocessing.Pool(processes=cpus)
pool2.map(georef, paramsGeoRef)
pool2.close()
pool2.join()
我尝试了不同的方法,例如:
在以下时间之前打开讨论:
def star_georef(Frameclock, A1,A2, B1, B2, fileName, D1, D2, D3, P1, P2):
return georef(*paramsGeoRef)
def georef(paramsGeoRef):
#Pseudo workflow...
return None
使用了其他映射类型:
pool2.imap_unordered()
怎么了?为什么这个方法适用于处理numpy
数组,而不是用于此目的?需要处理块大小的文件吗?你知道吗
也许,我可能需要养活工人,只要他们有工作发电机?你知道吗
遵循马提诺的建议
我以.npy格式保存带有numpy的Frameclock、A1和A2参数。然后我将.npy加载到并行化的。你知道吗
例如:
即使节省和加载这些是一个巨大的效率增益!所有工人都工作。你知道吗
相关问题 更多 >
编程相关推荐