La fonction de mon code python est très simple. Il lit le fichier netCDF dans une liste de fichiers et renvoie la valeur moyenne dans ce cas.Comment puis-je accélérer mon code Python par multiprocessing (traitement parallèle)?
Cependant, lire le fichier netCDF prend du temps. Je me demande si je peux accélérer ce processus par Multiprocessing (traitement parallèle) puisque mon poste de travail a des processeurs 32-core.
Le code ressemble à:
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')
Depuis le fichier de lecture est independet à l'autre, alors comment peut tirer le meilleur parti de mon poste de travail? Merci.
L'enfilage, plutôt que le multitraitement, semble plus approprié pour une tâche liée à l'E/S. –
Il existe plusieurs façons de distribuer le processus, mais vous devez vous assurer que la sortie ne se remplace pas. – mootmoot
Je ne vois pas où vous lisez les fichiers. Vous pouvez obtenir une certaine amélioration en chevauchant des lectures sur un flux avec un autre en cours de traitement, mais cette mise à l'échelle ne va que très loin. – tdelaney