有脚本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/