Arc*_*yno 1 python parallel-processing k-means scikit-learn
我无法理解 n_jobs 是如何工作的:
data, labels = sklearn.datasets.make_blobs(n_samples=1000, n_features=416, centers=20)
k_means = sklearn.cluster.KMeans(n_clusters=10, max_iter=3, n_jobs=1).fit(data)
Run Code Online (Sandbox Code Playgroud)
运行时间不到 1 秒
当 n_jobs = 2 时,它的运行量几乎是原来的两倍
n_jobs = 8,它太长了,在我的电脑上永远不会结束......(我有8个核心)
我对并行化的工作原理有什么不明白的地方吗?
n_jobs指定并行例程应使用的并发进程/线程的数量
来自文档
\n\n\n\n\n有些并行默认使用多线程后端,有些则使用多处理后端。可以使用 sklearn.utils.parallel_backend 覆盖默认后端。
\n
对于 python GIL,更多的线程并不能保证更好的速度。因此,请检查您的后端是否配置了线程或进程。如果是线程,那么尝试将其更改为进程(但你也会有 IPC 的开销)。
\n\n再次来自文档:
\n\n\n\n\n并行处理是否有助于改善运行时间取决于许多因素,并且尝试通常是一个好主意,而不是假设增加作业数量总是一件好事。并行运行某些估计器或函数的多个副本可能会对性能造成极大损害。
\n
所以这n_jobs不是灵丹妙药,但人们必须进行实验,看看它是否适用于他们的估计者和数据类型。
| 归档时间: |
|
| 查看次数: |
10100 次 |
| 最近记录: |