if __name__ == '__main__':
    logger = setupLogging()
    db = Database()
    db.loadFromJson(config.DATABASE_PATH)
    if (MKL_ENABLED):
        mkl.set_num_threads(
            1
        )  #disable mkl multiprocessing to get more control over the number of cores being used.
    taskList = []
    logger.info("Collect tasks that needs to be calculated")
    for optimizer in config.LIST_OF_OPTIMIZERS:
        for problem in config.LIST_OF_PROBLEMS:
            optimizerId = str(optimizer.__name__)
            problemId = str(problem.__name__)
            for k in range(config.K):
                if not db.exists(optimizerId, problemId, str(k)):
                    #optimizer().apply(problem(), config.MAX_EVALUATIONS)
                    taskList.append({
                        'optimizer': optimizer,
                        'problem': problem,
                        'maxeval': config.MAX_EVALUATIONS,
                        'k': k
                    })
                elif (config.REPEAT_INCOMPLETE and (np.shape(
                    (db.get(optimizerId, problemId, str(k)))['scores'])[0] <
                                                    config.MAX_EVALUATIONS)):
                    logger.info("Repeat evaluation of " + str(optimizerId) +
                                " on " + str(problemId) + " k=" + str(k) +
                                " because the previous did not complete 100%")
                    logger.info("Last results: " + str(
                        np.shape((db.get(optimizerId, problemId, str(k))