mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-03 19:10:58 +08:00
Fix the multi-processing bug
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
from qlib.model.ens.ensemble import Ensemble, RollingEnsemble
|
||||
from typing import Callable, Union
|
||||
from qlib.utils.serial import Serializable
|
||||
from joblib import Parallel, delayed
|
||||
|
||||
|
||||
class Group(Serializable):
|
||||
class Group:
|
||||
"""Group the objects based on dict"""
|
||||
|
||||
def __init__(self, group_func=None, ens: Ensemble = None):
|
||||
@@ -45,9 +44,8 @@ class Group(Serializable):
|
||||
dict: grouped_dict like {G1: object, G2: object}
|
||||
"""
|
||||
|
||||
# FIXME: The multiprocessing will raise the following error
|
||||
# NotImplementedError: Please specify valid `_ens_func`.
|
||||
# The problem maybe the state of the function is lost
|
||||
# NOTE: The multiprocessing will raise error if you use `Serializable`
|
||||
# Because the `Serializable` will affect the behaviours of pickle
|
||||
grouped_dict = self.group(ungrouped_dict, *args, **kwargs)
|
||||
|
||||
key_l = []
|
||||
|
||||
@@ -7,8 +7,10 @@ import pickle
|
||||
|
||||
class Serializable:
|
||||
"""
|
||||
Serializable behaves like pickle.
|
||||
But it only saves the state whose name **does not** start with `_`
|
||||
Serializable will change the behaviours of pickle.
|
||||
- It only saves the state whose name **does not** start with `_`
|
||||
It provides a syntactic sugar for distinguish the attributes which user doesn't want.
|
||||
- For examples, a learnable Datahandler just wants to save the parameters without data when dumping to disk
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
|
||||
@@ -4,7 +4,7 @@ from qlib.workflow.task.utils import list_recorders
|
||||
from qlib.utils.serial import Serializable
|
||||
|
||||
|
||||
class Collector(Serializable):
|
||||
class Collector:
|
||||
"""The collector to collect different results"""
|
||||
|
||||
def collect(self, *args, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user