Python多处理 – 为什么每个进程都有这么多线程?

我正在使用
joblib(多处理包的包装器)在可枚举的参数上运行某个函数的循环.当我执行htop时,我看到进程数等于cpu计数(n_jobs = -1会自动为您执行此操作).但是,我也看到每个进程都有与cpu_count一样多的线程 – 1 …这是预期的吗?为什么会出现第二层并行性,它来自何处? 最佳答案 这似乎是一个名为Loky的joblib后端的问题,它被joblib用作默认值,我遇到了完全相同的问题,由于线程太多,性能大幅下降.为了仅使用核心而不使用线程,您必须强制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)
点赞