并行读取pygrib文件参数

时间:2017-10-20 19:35:26

标签: python parallel-processing pygrib

我正在处理相当大的气象grib文件,每个文件包含超过50000条消息。有许多参数(温度,位势,能力等)的信息,我需要访问它。我使用pygrib来阅读它们。

我所做的是打开文件,然后使用" select"读取每个参数。 pygrib的功能。问题是选择功能非常慢。我考虑通过读取消息块(我不知道该怎么做)并行化每个参数的读取,但我认为并行读取每个参数可能更简单(即将每个参数的select函数发送到a cpu并将输出写入数组中。

我的代码是:

import pygrib as pg

grb = pg.open(file_name.grib)
temperature = grb.select(name='Temperature')
geop_height = grb.select(name='Geopotential')

我想将每个grb.select命令发送到一个CPU,以加快进程。可能吗?我读到了关于多处理程序包的内容,但我不知道如何在这里使用它(我看到了一些例子,比如这个Read large file in parallel?中的答案3,但我不知道如何推断我的情况)。< / p>

我想的是:

import multiprocessing as mp

params = ['Temperature', 'Geopotential']
pool = mp.Pool(processes = len(params))

def readparam(grb_file, param):
    return grb_file.select(name=param)

然后使用一些循环

pool.map(readparam, params)

获得结果。

此外,是否可以并行化单个grb.select命令(即将选择所有温度消息的任务划分为多个CPU)?

我可以访问64 CPU机器,这会有很大帮助。

提前谢谢!

0 个答案:

没有答案