Passed
Push — master ( 3f2c9d...310ec2 )
by Simon
01:51
created

hyperactive.main_args.MainArgs.set_n_jobs()   A

Complexity

Conditions 3

Size

Total Lines 5
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 4
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 3
nop 1
1
# Author: Simon Blanke
2
# Email: [email protected]
3
# License: MIT License
4
5
6
import random
7
import numpy as np
8
import multiprocessing
9
10
11
class MainArgs:
12
    def __init__(self, X, y, verbosity, random_state, memory):
13
        self.X = X
14
        self.y = y
15
        self.verbosity = verbosity
16
        self.random_state = random_state
17
        self.memory = memory
18
        self.get_search_path = False
19
20
        if verbosity > 9:
21
            self.get_search_path = True
22
23
        if self.verbosity > 2:
24
            self.verbosity = 2
25
26
        self.opt_para = dict()
27
28
    def search_args(
29
        self,
30
        search_config,
31
        max_time,
32
        n_iter,
33
        optimizer,
34
        n_jobs,
35
        warm_start,
36
        scatter_init,
37
    ):
38
        self.search_config = search_config
39
        self.max_time = max_time
40
        self.n_iter = n_iter
41
        self.optimizer = optimizer
42
        self.n_jobs = n_jobs
43
        self.warm_start = warm_start
44
        self.scatter_init = scatter_init
45
46
        self.model_list = list(self.search_config.keys())
47
        self.n_models = len(self.model_list)
48
49
        if self.max_time:
50
            self.max_time = self.max_time * 3600
51
52
        self.set_n_jobs()
53
54
        self._n_process_range = range(0, int(self.n_jobs))
55
56
        if isinstance(optimizer, dict):
57
            self.optimizer = list(optimizer.keys())[0]
58
            self.opt_para = optimizer[self.optimizer]
59
60
    def _set_random_seed(self, thread=0):
61
        """Sets the random seed separately for each thread (to avoid getting the same results in each thread)"""
62
        if self.random_state:
63
            rand = int(self.random_state)
64
        else:
65
            rand = 0
66
67
        random.seed(rand + thread)
68
        np.random.seed(rand + thread)
69
70
    def set_n_jobs(self):
71
        """Sets the number of jobs to run in parallel"""
72
        num_cores = multiprocessing.cpu_count()
73
        if self.n_jobs == -1 or self.n_jobs > num_cores:
74
            self.n_jobs = num_cores
75