Sha*_*arA 3 python python-multithreading scikit-learn xgboost
我想将XGBoost用于在线生产(Python 2.7 XGBoost API)。为了能够做到这一点,我想在预测操作中控制和限制XGBoost使用的线程数。
我正在使用XGBoost(xgboost.XGBRegressor)提供的sklearn兼容回归器,并一直尝试在回归器的构造函数中使用param nthread来将最大线程数限制为1。
不幸的是,无论nthread中设置的值如何,XGBoost都会继续使用多个线程。
还有另一种方法来限制XGBoost并强制它使用n = 1个线程执行预测操作吗?
我遇到了同样的问题,并弄清楚了。正确的答案是设置系统环境变量。对于python脚本:
import os
os.environ['OMP_NUM_THREADS'] = "1"
Run Code Online (Sandbox Code Playgroud)
会工作。
在导入任何其他软件包之前,请确保将这两行放在一起,否则可能无法正常工作。
答案:使用 nthread 的标准 set_params 失败,但是在使用时regr._Booster.set_param('nthread', 1)我能够将 XGBoost 限制为使用单个线程。
如上所述,env 变量OMP_NUM_THREADS=1也可以工作。
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |