如何从joblib Parallel中恢复控制?

2024-06-16 13:09:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用joblib从jupyter笔记本启动一组并行进程。然而,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-backed parallel loops cannot be nested below threads, setting n_jobs=1 **self._backend_args)

如何从joblib.Parallel获得对解释器的控制权?你知道吗


Tags: importself内容进程parallelinitdefjobs