diff --git a/freqtrade/optimize/hyperopt/hyperopt.py b/freqtrade/optimize/hyperopt/hyperopt.py index ed404e923..70a85b30b 100644 --- a/freqtrade/optimize/hyperopt/hyperopt.py +++ b/freqtrade/optimize/hyperopt/hyperopt.py @@ -14,7 +14,7 @@ from pathlib import Path from typing import Any import rapidjson -from joblib import Parallel, cpu_count +from joblib import Parallel, cpu_count, delayed, wrap_non_picklable_objects from freqtrade.constants import FTHYPT_FILEVERSION, LAST_BT_RESULT_FN, Config from freqtrade.enums import HyperoptState @@ -160,7 +160,9 @@ class Hyperopt: return self.hyperopter.generate_optimizer(*args, **kwargs) - return parallel(optimizer_wrapper(v) for v in asked) + return parallel( + delayed(wrap_non_picklable_objects(optimizer_wrapper))(v) for v in asked + ) def _set_random_state(self, random_state: int | None) -> int: return random_state or random.randint(1, 2**16 - 1) # noqa: S311 diff --git a/freqtrade/optimize/hyperopt/hyperopt_optimizer.py b/freqtrade/optimize/hyperopt/hyperopt_optimizer.py index b04478841..53aa8f88d 100644 --- a/freqtrade/optimize/hyperopt/hyperopt_optimizer.py +++ b/freqtrade/optimize/hyperopt/hyperopt_optimizer.py @@ -11,7 +11,7 @@ from pathlib import Path from typing import Any import optuna -from joblib import dump, load, delayed, wrap_non_picklable_objects +from joblib import dump, load from joblib.externals import cloudpickle from optuna.exceptions import ExperimentalWarning from pandas import DataFrame @@ -260,8 +260,6 @@ class HyperOptimizer: # noinspection PyProtectedMember attr.value = params_dict[attr_name] - @delayed - @wrap_non_picklable_objects def generate_optimizer(self, raw_params: dict[str, Any]) -> dict[str, Any]: """ Used Optimize function.