python脚本限制_如何限制不带终端或多处理库的python脚本使用的CPU数量?

我的主要问题是here。由于还没有人给出解决办法,我决定找个解决办法。我正在寻找一种方法,用python代码限制python脚本的CPU使用率(不是优先级,而是CPU核数)。我知道我可以用多处理库(池等)来实现这一点,但我不是用多处理来运行它的人。所以,我不知道该怎么做。我也可以通过终端来完成,但是这个脚本正在被另一个脚本导入。不幸的是,我没有机会通过终端机打电话。在

tl;dr:如何限制python脚本的CPU使用率(内核数),该脚本正被另一个脚本导入,我甚至不知道它为什么并行运行,而不通过终端运行它。(请检查下面的代码片段,是的,英语不是我的母语)

导致此问题的代码段:from sklearn.datasets import load_digits

from sklearn.decomposition import IncrementalPCA

import numpy as np

X, _ = load_digits(return_X_y=True)

#Copy-paste and increase the size of the dataset to see the behavior at htop.

for _ in range(8):

X = np.vstack((X, X))

print(X.shape)

transformer = IncrementalPCA(n_components=7, batch_size=200)

#PARTIAL FIT RUNS IN PARALLEL! GOD WHY?

---------------------------------------

transformer.partial_fit(X[:100, :])

---------------------------------------

X_transformed = transformer.fit_transform(X)

print(X_transformed.shape)

版本:Python 3.6

作业库0.13.2

scikit学习0.20.2

数字1.16.2

更新:不起作用。感谢您的澄清@Darkonaut。可悲的是,我早就知道这行不通,而且我已经清楚地说明了问题的标题,但我猜人们不会读。

我想我做错了。我更新了基于@Ben Chaliah Ayoubanswer的代码片段。似乎什么都没有改变。我还想指出一点:我不想在多个核心上运行这段代码。这一行transformer.partial_fit(X[:100, :])运行在多个核心上(出于某种原因),它没有n_jobs或任何东西。另外请注意,我的第一个示例和我的原始代码不是用池或类似的东西初始化的。我不能在一开始设置核心的数量(因为没有这样的地方)。但现在有了它的位置,但它仍然运行在多个核心上。你可以自己测试一下。(代码如下)这就是为什么我要寻找一个解决办法。在

^{pr2}$

更新:因此,在导入numpy之前,我曾尝试在代码中使用this设置blas线程,但没有成功(再次)。还有其他建议吗?下面是代码的最新阶段。在

学分:@Amirfrom sklearn.datasets import load_digits

from sklearn.decomposition import IncrementalPCA

import os

os.environ["OMP_NUM_THREADS"] = "1" # export OMP_NUM_THREADS=1

os.environ["OPENBLAS_NUM_THREADS"] = "1" # export OPENBLAS_NUM_THREADS=1

os.environ["MKL_NUM_THREADS"] = "1" # export MKL_NUM_THREADS=1

os.environ["VECLIB_MAXIMUM_THREADS"] = "1" # export VECLIB_MAXIMUM_THREADS=1

os.environ["NUMEXPR_NUM_THREADS"] = "1" # export NUMEXPR_NUM_THREADS=1

import numpy as np

X, _ = load_digits(return_X_y=True)

#Copy-paste and increase the size of the dataset to see the behavior at htop.

for _ in range(8):

X = np.vstack((X, X))

print(X.shape)

transformer = IncrementalPCA(n_components=7, batch_size=200)

transformer.partial_fit(X[:100, :])

X_transformed = transformer.fit_transform(X)

print(X_transformed.shape)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值