我正在使用joblib(多处理程序包的包装程序)对可枚举参数的某些函数进行循环。当我执行htop时,我看到进程数量等于cpu计数的数量(n_jobs=-1自动为您执行此操作)。但是,我还看到每个进程具有与cpu_count - 1一样多的线程...这是预期的吗?为什么会有第二层并行性,它来自何处?

最佳答案

一个名为Loky的joblib后端似乎是一个问题,joblib将其用作默认后端,我遇到了完全相同的问题,并且由于线程过多,导致性能大幅下降。为了仅使用核心而不使用线程,您必须通过以下方式强制joblib将multiprocessing用作后端:

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)

关于python - Python多处理-为什么每个进程有这么多线程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43643253/

10-12 23:10