Я запускаю несколько параллельных процессов с ноутбука Jupyter, используя joblib
.Однако joblib.Parallel
по сути заставляет меня join
в тот момент, когда я это называю.Это мне не нужно, потому что процессы записывают свои результаты на диск и ничего не возвращают.Я хотел бы немедленно вернуть контроль над интерпретатором, чтобы процессы продолжали работать в фоновом режиме.Я попытался обернуть вызов в joblib.Parallel
в threading.Thread
, но в результате все работало последовательно:
import threading
from joblib import Parallel, delayed
def inc(x):
return x+1
class ParallelProcessingThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
Parallel(n_jobs=32)(delayed(inc)(x)
for x in range(10000000)
)
thread = ParallelProcessingThread()
thread.start()
. Выдал мне следующее предупреждение:
/usr/local/lib/python3.5/dist-packages/joblib/parallel.py:739: UserWarning: параллельные циклы с Loky-поддержкой не могут быть вложенными ниже потоков, устанавливая n_jobs = 1 ** self._backend_args)
Как вернуть контроль над переводчиком с joblib.Parallel
?