VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 268
声望: 4

VNPY3.6在vnpy_ctastrategy/vnpy_ctabacktester的CTA策略模块执行参数优化时添加了最大进程数量限制参数max_workers,请教一下,这个参数具体怎么设置? 然后设置最大可以是多少?最大线程数能超过63吗?

Member
avatar
加入于:
帖子: 1742
声望: 132

Windows系统上不能超过63,这个是由于Python进程池的Windows实现限制的,Linux则没有了。

一般建议用0就好,会直接基于你的CPU核心数量启动对应的进程,如果确实优化过程中发现内存不足程序崩溃了,那就设置核心数N/2试试看

Member
avatar
加入于:
帖子: 268
声望: 4

哦哦,明白了,再咨询一下,您建议用0或者核心数N/2赋值,这个0或者核心数N/2需要在哪里赋值呢?是下面代码里面直接赋值还是其他设置里面?

def run_bf_optimization(
    self,
    optimization_setting: OptimizationSetting,
    output: bool = True,
    max_workers: int = None
) -> list:
    """"""
    if not check_optimization_setting(optimization_setting):
        return

    evaluate_func: callable = wrap_evaluate(self, optimization_setting.target_name)
    results: list = run_bf_optimization(
        evaluate_func,
        optimization_setting,
        get_target_value,
        max_workers=max_workers,
        output=self.output
    )

    if output:
        for result in results:
            msg: str = f"参数:{result[0]}, 目标:{result[1]}"
            self.output(msg)

    return results

run_optimization = run_bf_optimization

def run_ga_optimization(
    self,
    optimization_setting: OptimizationSetting,
    output: bool = True,
    max_workers: int = None
) -> list:
    """"""
    if not check_optimization_setting(optimization_setting):
        return

    evaluate_func: callable = wrap_evaluate(self, optimization_setting.target_name)
    results: list = run_ga_optimization(
        evaluate_func,
        optimization_setting,
        get_target_value,
        max_workers=max_workers,
        output=self.output
    )

    if output:
        for result in results:
            msg: str = f"参数:{result[0]}, 目标:{result[1]}"
            self.output(msg)

    return results
Member
avatar
加入于:
帖子: 1742
声望: 132

可以看下3.6.0的CtaBacktester,优化配置界面多了个进程数量的选项

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】