Han*_*art 5 python multithreading multiprocessing htop joblib
我正在使用joblib(多处理包的包装器)在可枚举参数上的某些函数上运行循环。当我这样做时htop,我看到进程数等于 cpu 计数(n_jobs=-1自动为您执行此操作)。但是,我还看到每个进程都有尽可能多的线程cpu_count - 1...这是预期的吗?为什么会有第二层并行性?它从何而来?
这似乎是一个名为 joblib 后端的问题Loky,该后端被 joblib 作为默认后端使用,我遇到了完全相同的问题,并且由于线程太多而导致性能大幅下降。为了仅使用核心而不使用线程,您必须multiprocessing通过以下方式强制 joblib 用作后端:
from joblib import Parallel, delayed
my_list_of_results = Parallel(n_jobs=-1, backend="multiprocessing")(delayed(my_function)(my_stuff, ) for my_stuff in whatever)
Run Code Online (Sandbox Code Playgroud)