如何通过多处理(并行处理)加快我的Python代码



我的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";

然后,对于每个数据集,请完成您详细介绍的其余工作。无论实际"慢东西",这都是基本方法。

相关内容

  • 没有找到相关文章

最新更新