Multiprocessing process.start() 在笔记本中什么都不做?

问题描述 投票:0回答:0

我有 5 个独立的函数要并行执行:

# Defining the BO acquisition function
acquisition_function = UtilityFunction(kind="ei",xi=1e-1)

# Defining a wrapper function that calls maximize - wilson
def wilson_wrapper():
    print('in wilson wrapper')
    wilson_optimizer.maximize(
        n_iter=n_iter_BO,
        init_points=init_points_BO,
        acquisition_function=acquisition_function
    )

# Defining a wrapper function that calls maximize - wong
def wong_wrapper():
    print('in wong wrapper')
    wong_optimizer.maximize(
        n_iter=n_iter_BO,
        init_points=init_points_BO,
        acquisition_function=acquisition_function
    )

# Defining a wrapper function that calls maximize - jansen
def jansen_wrapper():
    print('in jansen wrapper')
    jansen_optimizer.maximize(
    n_iter=n_iter_BO,
    init_points=init_points_BO,
    acquisition_function=acquisition_function
    )

# Defining a wrapper function that calls maximize - larter
def larter_wrapper():
    print('in larter wrapper')
    larter_optimizer.maximize(
    n_iter=n_iter_BO,
    init_points=init_points_BO,
    acquisition_function=acquisition_function
    )

# Defining a wrapper function that calls maximize - kuramoto
def kuramoto_wrapper():
    print('in kuramoto wrapper')
    kuramoto_optimizer.maximize(
    n_iter=n_iter_BO,
    init_points=init_points_BO,
    acquisition_function=acquisition_function
    )

在 jupyter 笔记本中。出于某种原因,当我尝试以这种方式将每个定义为一个过程时:

from multiprocess import Process

if __name__ == '__main__':
    wilson_process = Process(target=wilson_wrapper)
    wong_process = Process(target=wong_wrapper)
    jansen_process = Process(target=jansen_wrapper)
    larter_process = Process(target=larter_wrapper)
    kuramoto_process = Process(target=kuramoto_wrapper)

    wilson_process.start()
    wong_process.start()
    jansen_process.start()
    larter_process.start()
    kuramoto_process.start()

    wilson_process.join()
    wong_process.join()
    jansen_process.join()
    larter_process.join()
    kuramoto_process.join()

没有任何反应,有或没有

 if __name__ == '__main__'
(单元仅在 0.3 秒内运行,并且没有
print()
语句打印)。我尝试以不同的方式定义它,在那里我创建一个函数和所有将被调用的
optimizer 
对象的列表:

def main_wrapper(optimizer, n_iter_BO, init_points_BO, acquisition_function):
    print(optimizer)
    optimizer.maximize(
        n_iter=n_iter_BO,
        init_points=init_points_BO,
        acquisition_function=acquisition_function
    )

optimizers_list = [wilson_optimizer, wong_optimizer, jansen_optimizer, larter_optimizer, kuramoto_optimizer]

然后用:

from multiprocess import Process

max_pool = 5    
with Pool(max_pool) as p:
    pool_outputs = list(
        tqdm(
            p.imap(partial(main_wrapper, n_iter_BO, init_points_BO, acquisition_function),
                optimizers_list),
            total=len(optimizers_list)
        )
    )

# Getting the results of the 5 repetitions from the process outputs
multiprocessing_outputs = list(zip(*pool_outputs))
multiprocessing_outputs = list(multiprocessing_outputs[1])
print(multiprocessing_outputs)

这也行不通。有没有办法在 Jupyter Notebook 中运行 5 个独立的函数?非常感谢您的帮助!

python jupyter-notebook multiprocessing multiprocess
© www.soinside.com 2019 - 2024. All rights reserved.