我正在读取数百个HDF文件并分别处理每个HDF的数据。但是,这需要花费很长时间,因为它一次只能处理一个HDF文件。我只是偶然发现了http://docs.python.org/library/multiprocessing.html,我现在想知道如何使用多处理来加快速度。用于更快处理数据的多进程Python/Numpy代码
到目前为止,我想出了这个:
import numpy as np
from multiprocessing import Pool
def myhdf(date):
ii = dates.index(date)
year = date[0:4]
month = date[4:6]
day = date[6:8]
rootdir = 'data/mydata/'
filename = 'no2track'+year+month+day
records = read_my_hdf(rootdir,filename)
if records.size:
results[ii] = np.mean(records)
dates = ['20080105','20080106','20080107','20080108','20080109']
results = np.zeros(len(dates))
pool = Pool(len(dates))
pool.map(myhdf,dates)
然而,这显然是不正确的。你可以按照我想要做的一连串的想法吗?我需要改变什么?
谢谢!这就说得通了。还有一个问题:使用Pool(number)我指定了并行进程的数量?所以如果我有很多HDF文件(> 1000),我应该保持池值在4-5左右? – HyperCube
一个好的经验法则是每个物理核心的一个过程。 –