Python并发的基准,为什么Ubuntu的表现比Windows慢?

2024-04-19 03:03:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Intel(R)Xeon(R)L5640(6核12同级)上运行一组parallel计算,有以下两种平台

  • Ubuntu 18.04、Python 3.7.3、numpy 1.16.4、sklearn 0.21.2。

  • Windows7Ultimate、Python3.7.3、Numpy1.16.4、sklearn 0.21.2。

没有任何其他作业/任务占用cpu内核。你知道吗

我对这个项目做了基准测试,得到了一些数据。你知道吗

from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from sklearn.datasets import fetch_openml
import time
X, y = fetch_openml('mnist_784', version=1, return_X_y=True)
(trainData, testData, trainLabels, testLabels) = train_test_split(X,
y, test_size=0.1)

start = time.time()
model = KNeighborsClassifier(n_jobs=4)
model.fit(trainData, trainLabels)
predictions = model.predict(testData)
print('n_jobs=4 took {}s'.format(time.time() - start))

在Ubuntu和Windows上都花了大约470秒,这是合理的。你知道吗

然后我做了这个

start = time.time()
model = KNeighborsClassifier(n_jobs=6)
model.fit(trainData, trainLabels)
predictions = model.predict(testData)
print('n_jobs=6 took {}s'.format(time.time() - start))

在Ubuntu上花了493秒,在Windows上花了350秒,其中Windows上的部分是合理的,但Ubuntu上的部分不是。你知道吗

在Windows上,n\u jobs=6比n\u jobs=4花费的时间少,这是合理的,因为代码使用了更多的cpu核。你知道吗

在Ubuntu上,n\u jobs=6比n\u jobs=4花费更多的时间,这是不合理的。你知道吗

这表明带有默认后端的joblib parallel在Ubuntu和Windows之间执行不同的逻辑。你知道吗

然后我在doc中搜索。但是文档涉及的“windows”是关于“多处理”后端的,这里不适用,因为我的是“0.13.2”。你知道吗

那么,为什么Ubuntu的运行速度比Windows慢呢?你知道吗


Tags: fromtestimportmodeltimeparallelubuntuwindows