Я написал код для параллельного запуска задачи с использованием библиотеки multiprocessing
. Когда я запускаю этот код прямо из терминала, он работает правильно, используя количество ядер, определенных ранее.
from multiprocessing import Pool
from minepy import MINE
def mic(pair):
assert len(pair) == 4 and isinstance(pair, tuple)
x, y, x_name, y_name = pair
mine = MINE()
mine.compute_score(x, y)
return {(x_name, y_name): mine.mic()}
num_cores = multiprocessing.cpu_count() - 1
inputs = [(independent_var.as_matrix(), dependent_var.as_matrix(),
independent_var.name, dependent_var.name)
for i, independent_var in dataset.iteritems()
for j, dependent_var in dependent_variables.iteritems()
if len(dependent_var.unique()) > 1]
if len(inputs) > 0:
with Pool(num_cores) as p:
results = p.map(func, inputs)
Но когда я запускаю его через Jupyter в Windows, ядра работают правильно в течение нескольких секунд. После этого процесс останавливается и просматривается. Есть ли способ избежать такого поведения?