def cal(base_block,i,j): std=np.std(base_block) dist=np.max(base_block)-np.min(base_block) return [i,j,std,dist] plist=[] with Pool() as pool: for i in range(height): print("\r",i,"/",height," ",end="") if i<50 or i>height-51: continue for j in range(width): if j<50 or j>width-51: continue base_block=data[i-50:i+50,j-50:j+50] plist.append(pool.apply_async(cal,args=(base,i,j,))) pool.close() pool.join() for p in plist: result=p.get() [i,j,std,dist]=result base_std[i,j]=std base_dist[i,j]=dist base_std.astype(np.float32).tofile(r"D:\MicroSAR\C-SAR\Ortho\Ortho\Temporary\HH_std.bin") base_dist.astype(np.float32).tofile(r"D:\MicroSAR\C-SAR\Ortho\Ortho\Temporary\HH_dist.bin") print(base_dist.shape,base_dist.dtype)