我的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')
由于阅读文件是彼此独立的,因此如何充分利用我的工作站?谢谢。
似乎您正在寻找相当标准的线程实现。假设是数据集构造函数是您可能想做这样的阻塞部分:
from threading import Thread
def CreateDataset( offset, files, datasets ):
datasets[offset] = Dataset( files[i], 'r' )
threads = [None] * len( filerange )
data_sets = [None] * len( filerange )
for i in filerange:
threads[i] = Thread( None, CreateDataset, None, ( i, file_list, data_sets ) )
threads[i].start();
for t in threads:
t.join()
# Resume work with each item in the data_sets list
print "All Done";
然后,对于每个数据集,请完成您详细介绍的其余工作。无论实际"慢东西",这都是基本方法。