Passed
Pull Request — master (#101)
by Simon
01:48
created

run_search.run_search()   A

Complexity

Conditions 3

Size

Total Lines 18
Code Lines 12

Duplication

Lines 18
Ratio 100 %

Importance

Changes 0
Metric Value
cc 3
eloc 12
nop 3
dl 18
loc 18
rs 9.8
c 0
b 0
f 0
1
# Author: Simon Blanke
2
# Email: [email protected]
3
# License: MIT License
4
5
6
from .distribution import (
7
    single_process,
8
    joblib_wrapper,
9
    multiprocessing_wrapper,
10
    pathos_wrapper,
11
)
12
from .process import _process_
13
14
15
def proxy(args):
16
    return _process_(*args)
17
18
19
dist_dict = {
20
    "joblib": (joblib_wrapper, _process_),
21
    "multiprocessing": (multiprocessing_wrapper, proxy),
22
    "pathos": (pathos_wrapper, proxy),
23
}
24
25
26 View Code Duplication
def _get_distribution(distribution):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
27
    if hasattr(distribution, "__call__"):
28
        return (distribution, _process_), {}
29
30
    elif isinstance(distribution, dict):
31
        dist_key = list(distribution.keys())[0]
32
        dist_paras = list(distribution.values())[0]
33
34
        return dist_dict[dist_key], dist_paras
35
36
    elif isinstance(distribution, str):
37
        return dist_dict[distribution], {}
38
39
40 View Code Duplication
def run_search(opt_pros, distribution, n_processes):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
41
    opts = list(opt_pros.values())
42
43
    processes = list(opt_pros.keys())
44
    optimizers = list(opt_pros.values())
45
    process_infos = list(zip(processes, optimizers))
46
47
    if n_processes == "auto":
48
        n_processes = len(process_infos)
49
50
    if n_processes == 1:
51
        results_list = single_process(_process_, process_infos)
52
    else:
53
        (distribution, process_func), dist_paras = _get_distribution(distribution)
54
55
        results_list = distribution(process_func, process_infos, n_processes)
56
57
    return results_list
58