VNPY3.6在vnpy_ctastrategy/vnpy_ctabacktester的CTA策略模块执行参数优化时添加了最大进程数量限制参数max_workers,请教一下,这个参数具体怎么设置? 然后设置最大可以是多少?最大线程数能超过63吗?
VNPY3.6在vnpy_ctastrategy/vnpy_ctabacktester的CTA策略模块执行参数优化时添加了最大进程数量限制参数max_workers,请教一下,这个参数具体怎么设置? 然后设置最大可以是多少?最大线程数能超过63吗?
Windows系统上不能超过63,这个是由于Python进程池的Windows实现限制的,Linux则没有了。
一般建议用0就好,会直接基于你的CPU核心数量启动对应的进程,如果确实优化过程中发现内存不足程序崩溃了,那就设置核心数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
可以看下3.6.0的CtaBacktester,优化配置界面多了个进程数量的选项