From 2bed61436bd5ed26f0604aceb2c723cef57f76aa Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 17 Apr 2019 13:37:22 +0300 Subject: [PATCH] serialization bottleneck resolved; back to cloudpickle --- freqtrade/optimize/hyperopt.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index c40d874e9..d30533b3f 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -19,7 +19,6 @@ from typing import Any, Dict, List from joblib import Parallel, delayed, dump, load, wrap_non_picklable_objects from joblib._parallel_backends import LokyBackend from joblib import register_parallel_backend, parallel_backend -from joblib.externals.loky import set_loky_pickler from pandas import DataFrame from skopt import Optimizer from skopt.space import Dimension @@ -262,7 +261,9 @@ class Hyperopt(Backtesting): ) def run_optimizer_parallel(self, parallel, tries: int, first_try: int) -> List: - result = parallel(delayed(self.parallel_objective)(asked, i) for asked, i in + result = parallel(delayed( + wrap_non_picklable_objects(self.parallel_objective)) + (asked, i) for asked, i in zip(self.opt_generator(), range(first_try, first_try + tries))) return result @@ -314,7 +315,6 @@ class Hyperopt(Backtesting): cpus = multiprocessing.cpu_count() logger.info(f'Found {cpus} CPU cores. Let\'s make them scream!') - set_loky_pickler('pickle') self.opt = self.get_optimizer(cpus) frames = ((self.total_tries - 1) // EVALS_FRAME) @@ -344,6 +344,11 @@ class Hyperopt(Backtesting): self.save_trials() self.log_trials_result() + def __getstate__(self): + state = self.__dict__.copy() + del state['trials'] + return state + def start(args: Namespace) -> None: """