У меня проблемы с завершением моих пулов с консоли. Нажатие «Остановить текущую команду» не работает, так как рабочие продолжают процесс после этого. Я безуспешно пытался набрать pool.terminate () в консоли.
Мой код выглядит примерно так (упрощенно, извиняюсь за предупреждение ODE):
import collections
import multiprocessing
import time
from scipy.integrate import odeint
import numpy as np
class Chemostat(object):
def __init__(self, Parameter1, Parameter2):
self.Parameter1 = Parameter1
self.Parameter2 = Parameter2
def initialise(self):
self.Parameter3 = self.Parameter1 * self.Parameter2
def run(self):
self.initialise()
t = np.linspace(1, 100, 100)
y0 = self.Parameter3
sol = odeint(self.dXdt, y0, t)
self.output = sol
def dXdt(self,X,t):
out = X**t
return out
def model_function(x):
print(f'Processing experiment')
time.sleep(15)
model=Chemostat(Parameter1 = x.Parameter1, Parameter2 = x.Parameter2)
model.run()
out = model.output
print(f'Experiment completed')
return out
Experiment = collections.namedtuple('Experiment',[
'Parameter 1',
'Parameter 2',
])
experiments = (
Experiment(Parameter1 = 0, Parameter2 = 0.17),
Experiment(Parameter1 = 2, Parameter2 = 0.15),
)
pool = multiprocessing.Pool(6)
results = pool.map(model_function, experiments)
Я безуспешно пытался воспроизвести ошибку без указания, так что, возможно, проблема в этом?
Большое спасибо!
Редактировать: Я использую Python 3.7
Edit2: эта проблема сохраняется в jupyter qtconsole (предполагая, что это не просто spyder)