- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 python 中的多进程池来训练完全独立的任务,其中 lightgbm 用于训练(我不确定这是否与问题相关)。这是代码
from sklearn.datasets import load_breast_cancer
import pandas as pd
from sklearn.model_selection import train_test_split, KFold
import lightgbm as lgb
import numpy as np
def functionToParallize(splitnumber=2):
data = load_breast_cancer()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = pd.Series(data.target)
X_train, X_test, y_train, y_test = train_test_split(X, y)
folds = KFold(splitnumber)
results = lgb.cv({}, lgb.Dataset(X_train, y_train), folds=folds,metrics=['rmse'])
return results
为了并行化,我将多处理池与 2 个池 worker 一起使用。但它确实效率低下,因为使用 2 个池完成一项任务所需的时间是仅使用一个池的 1000 倍。例如。
from multiprocessing import Pool
import psutil
print(psutil.cpu_count())
输出
4
starttime=time.time()
pool = Pool(2)
multiple_results = [pool.apply_async(functionToParallize) for i in [3]]
p=[res.get() for res in multiple_results]
print((time.time()-starttime)/60)
输出
0.007067755858103434
但是有两个池子
starttime=time.time()
pool = Pool(2)
multiple_results = [pool.apply_async(functionToParallize) for i in [2,3]]
p=[res.get() for res in multiple_results]
print((time.time()-starttime)/60)
1.026989181836446
这实际上不是最初的任务,但我在那里做类似的事情。但是对于那个单一的任务大约需要一分钟,而 pool 2 进程永远不会在那里结束。我在这里做错了什么吗?我在 jupyter notebook 上做这个,如果相关的话。
感谢任何帮助!谢谢!
最佳答案
找到原因了,是因为lgb的内线程和custom pooling冲突了。强制 lgb 不使用线程有帮助。
results = lgb.cv({'num_threads':1}, lgb.Dataset(X_train, y_train), folds=folds,metrics=['rmse'])
谢谢曼子,干杯
关于python - 多处理池和 Lightgbm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61614757/
我在一次采访中被问到这个问题,但无法回答。也没有找到任何相关信息。 最佳答案 正如 Docker 文档中所述,Docker 注册表是: [...] a hosted service containin
我目前正在为我的应用程序上的所有用户使用单个 mysql 连接。我想开始使用一个池(它应该更优化,对吧?)但我有一个“结构”问题:createPool 方法只适用于回调,我不明白如何通过与 socke
据我所知,“testOnBorrow”和“validationQuery”参数正合我意,但它们似乎没有按预期工作。 我启动应用程序,运行一些查询,一切正常。然后我重新启动 postgres 服务器 -
我需要解决 Entity Framework 核心中的 Multi-Tenancy 问题。每个租户都有自己的数据库(由于历史原因,无法更改)。 我将按照许多地方的建议使用上下文工厂(example 1
我有两个文件: x.py class BF(object) def __init__(): . . def add(self,z): . . y.py from y
我是一名优秀的程序员,十分优秀!