python - 如何设置从 shell 调用时 python 脚本可以使用的最大线程

标签 python multithreading scikit-learn

有脚本a.py,它将运行一些多线程任务,请注意,我无法控制a.py。

我正在寻找一种方法来限制它可以使用的线程数量,因为我发现使用比我的 CPU 核心更多的线程会减慢脚本的速度。

可能是这样的:

python --nthread=2 a.py

或者修改我的操作系统中的某些内容也是可以接受的。

我使用的是ubuntu 16.04

根据要求:

a.py 只是 scikit-learn MLPRegressor 中的一个模块。 我也问过这个问题here .

最佳答案

一种更通用的方法,不是特定于 python 的:

taskset -c 1-3 python yourProgram.py

在这种情况下,将使用线程 1-3(总共 3 个)。您的程序调用的任何并行化都将共享这些资源。

为了找到适合您具体问题的解决方案,您应该更好地确定代码的哪一部分是并行的。例如,如果是由于 numpy 例程引起的,您可以通过使用来限制它:

OMP_NUM_THREADS=4 python yourProgram.py

同样,第一个解决方案是通用的并由操作系统处理,而第二个解决方案是特定于 python (numpy) 的。

关于python - 如何设置从 shell 调用时 python 脚本可以使用的最大线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39381974/

相关文章:

python - RandomForestClassifier.fit 在不同机器上使用不同数量的 RAM

python - 在深度学习生成模型中创建掩蔽层

python - 自定义小部件未在 kivy 中接收触摸事件

C 读取器和写入器线程

python - 朴素贝叶斯多项式模型

python - 使用 CountVectorizer 连接自定义功能

python - 将图像转换为字符串时出现pytesseract错误

python - 使用正则表达式以任意顺序匹配两个单词

c++ - 强制类方法使用其私有(private)成员的 setter/getter

python - Python端口扫描程序无法正常运行