【发布时间】:2017-09-17 11:25:33
【问题描述】:
我的python代码的功能非常简单。它通过文件列表读取 netCDF 文件并在这种情况下返回平均值。
但是,读取 netCDF 文件需要时间。我想知道我可以通过多处理(并行处理)来加速这个过程,因为我的工作站有 32 核处理器。
代码如下:
from netCDF4 import Dataset
for i in filerange:
print "Reading the",i, "file", "Wait"
infile_Radar = Dataset(file_list[i],'r')
# Read the hourly Data
Radar_rain=np.array(infile_Radar.variables['rain'][:])
for h in range(0,24):
hourly_rain = Radar_rain[h,:]
hourly_mean[i,h] = np.mean(hourly_rain)
np.savetxt('Hourly_Spatial_mean.txt', hourly_mean, delimiter='\t')
既然读取文件是相互独立的,那么如何才能充分利用我的工作站呢?谢谢。
【问题讨论】:
-
线程,而不是多处理,似乎更适合 IO 密集型任务。
-
分发进程的方法有很多种,但是,你必须确保输出不会相互覆盖。
-
我看不到您在哪里阅读文件。您可以通过将一个流上的读取与处理另一个流重叠来获得一些改进,但这种扩展只能到此为止。
-
我编辑了代码。 @tdelaney。可以使用独特的指示器来修复覆盖。但我不知道分配过程的方式。你能给我一些提示吗?@mootmoot
-
再解释一下:“读取文件是相互独立的”.
标签: python parallel-processing multiprocessing netcdf