多进程运行grib2micaps程序

目录

使用 python 的 multiprocess 模块实现多进程。

grapesGfs_grib2micaps_v3.9.4 版本尚未支持多进程,无法充分利用多核 CPU 的优势。我们可以通过同时运行多个 grib2micaps 程序模拟多进程模式。

实现

grib2message.exe 是一个独立的可执行文件,Python 中可以通过 subprocess.run 以子进程的方式执行 exe 程序。

subprocess.run(
    [
        task_param['program'],
        task_param['start_time'],
        task_param['start_forecast_hour'],
        task_param['end_forecast_hour']
    ],
    stdout=None,
    stderr=None,
    shell=False
)

想要同时运行多个 exe 程序,就需要使用多进程。Python 的 multiprocess 模块提供多进程支持。
下面的示例中使用 multiprocess.Pool 实现对多进程的管理。

p = Pool(config.config_dict['pool_size'])
for i in range(len(config.config_dict['task_list'])):
    p.apply_async(run_grib2micaps, args=(i, config.config_dict['task_list'][i]))
p.close()
p.join()

结合以上两者,就能通过多进程的方式实现批量运行 grib2micaps.exe。

示例

请参考我的 grib2micaps-util 项目:https://github.com/perillaroc/grib2micaps-util

参考

Python Doc:multiprocessing
Python Doc:subprocess