Kedro 0.18.7中如何为ParallelRunner设置max_workers参数?
给Kedro ParallelRunner设置max_workers的两种实现方法
方法1:修改项目根目录的run.py(快速实现)
Kedro项目根目录的run.py是自定义运行逻辑的入口,你可以直接在这里初始化ParallelRunner并指定max_workers参数:
- 打开项目根目录的
run.py文件 - 修改
main函数中的运行逻辑,显式传入带参数的runner实例:
from kedro.framework.project import configure_project from kedro.runner import ParallelRunner def main(): configure_project("your_project_name") # 替换为你的实际项目名称 from kedro.framework.session import KedroSession from kedro.framework.startup import bootstrap_project project_path = bootstrap_project(".") with KedroSession.create(project_path=project_path) as session: session.run( pipeline_name="<pipeline_name>", # 替换为你要运行的管道名 runner=ParallelRunner(max_workers=4) ) if __name__ == "__main__": main()
- 运行时直接执行
python run.py即可,无需再在命令行添加--runner参数
方法2:通过配置文件控制(灵活扩展推荐)
如果需要更灵活地调整参数(比如分环境配置),可以结合配置文件和项目设置实现:
- 在项目的
src/<your_project_name>/settings.py中添加runner的创建逻辑:
from kedro.runner import ParallelRunner def create_parallel_runner(max_workers=None): # 未指定时默认用4核心,可根据需求修改默认值 return ParallelRunner(max_workers=max_workers or 4)
- 修改根目录的
run.py,从配置文件读取参数:
from kedro.framework.project import configure_project from your_project_name.settings import create_parallel_runner # 替换为项目名 def main(): configure_project("your_project_name") from kedro.framework.session import KedroSession from kedro.framework.startup import bootstrap_project project_path = bootstrap_project(".") with KedroSession.create(project_path=project_path) as session: # 从配置文件读取max_workers参数 runner_config = session.config_loader.get("runner") max_workers = runner_config.get("max_workers", 4) runner = create_parallel_runner(max_workers) session.run(pipeline_name="<pipeline_name>", runner=runner) if __name__ == "__main__": main()
- 在
conf/base/runner.yml中添加配置项(后续修改只需改配置文件):
max_workers: 4
如果需要分环境配置,可在conf/dev/runner.yml或conf/prod/runner.yml中覆盖这个值。
注意事项
- 所有代码中的
your_project_name需要替换为你的实际项目名称 - WSL2共享主机CPU资源,
max_workers建议设置不超过主机可用核心数,避免资源耗尽
内容的提问来源于stack exchange,提问作者Jenny_L
相关产品推荐
相关产品推荐

