【问题标题】:Python multiprocessing - why do I get so many thread per process?Python 多处理 - 为什么每个进程有这么多线程?
【发布时间】:2017-09-24 09:23:18
【问题描述】:

我正在使用joblib(多处理包的包装器)在可枚举参数上的某个函数上运行循环。当我执行htop 时,我看到进程数等于cpu 数(n_jobs=-1 会自动为您执行此操作)。但是,我也看到每个进程都有与cpu_count - 1 一样多的线程...这是预期的吗?怎么会有第二层并行,又是从哪里来的呢?

【问题讨论】:

  • 你找到解决这个问题的方法了吗?
  • 不。没有人回答...
  • 我终于找到了解决办法,请看下面的答案。

标签: python multithreading multiprocessing joblib htop


【解决方案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)

【讨论】:

猜你喜欢
  • 2018-10-27
  • 2015-01-13
  • 1970-01-01
  • 2021-06-19
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多