pybroker.parallel 模块

包含并行执行配置。

class ParallelConfig(n_jobs: int | None = -1, backend: str | None = 'loky', parallel: Parallel | None = None)[源代码]

基类:object

PyBroker 使用的并行执行配置。

PyBroker 可以使用 joblib 并行计算指标、训练模型和运行优化。默认情况下,优化试验会使用所有可用核心运行;指标计算和模型训练还需要分别设置 parallel_indicators/parallel_models 标志。调用 set_parallel(n_jobs=1) 可使所有操作按顺序运行,使用 get_parallel_config() 可读取当前配置。

n_jobs

工作进程(worker)的数量。 -1 (默认值)使用所有可用核心; 1 表示按顺序运行。

类型:

int | None

backend

joblib 后端名称。 'loky' (默认值)会在独立的进程中运行任务。任何已在 joblib 中注册的后端也都可以使用(例如在调用 ray.util.joblib.register_ray() 后使用 'ray')。

类型:

str | None

parallel

可选的、预先构建好的 joblib.Parallel 实例,会完全覆盖 n_jobsbackend。设置后,PyBroker 会直接使用该实例,其生命周期由调用方负责管理。默认为 None

类型:

joblib.parallel.Parallel | None

get_parallel_config() ParallelConfig[源代码]

返回当前的并行配置

set_parallel(n_jobs: int | None = None, backend: str | None = None, parallel: Parallel | None = None) None[源代码]

配置 PyBroker 使用的并行执行方式。

PyBroker 默认使用所有可用核心;调用 set_parallel(n_jobs=1) 可按顺序运行。

参数:
  • n_jobs -- 工作进程的数量。 -1 使用所有核心(默认值); 1 表示按顺序运行。保留为 None 则维持当前已配置的值。

  • backend -- joblib 后端名称: 'loky' (默认值),或通过 joblib.register_parallel_backend() 注册的任意后端(例如在调用 ray.util.joblib.register_ray() 后使用 'ray')。 'multiprocessing' 后端会被拒绝,因为其标准 pickle 序列化机制无法传递 PyBroker 的调度闭包。

  • parallel -- 预先构建好的 joblib.Parallel 实例。与 n_jobs/backend 互斥;其生命周期由调用方负责管理。

抛出:

ValueError -- 如果 paralleln_jobsbackend 一同传入;如果 backend 不是已注册的 joblib 后端,或为 'multiprocessing';或者 parallel 返回的结果顺序与提交顺序不一致。