numthreads
Set the number of threads used by OpenBLAS, MKL, OMP, NumExpr, and Accelerate
numthreads
is a really tiny and simple Python package designed to set the number of threads for various computing libraries including OpenBLAS, Intel's Math Kernel Library (MKL), OpenMP, NumExpr, and Accelerate.
The number of threads can be set via the command line or in Python code.
The performance of many numerical algorithms varies significantly based on the number of threads employed.
While increasing the number of threads can often accelerate these algorithms, it's not always the case.
In some instances, using more threads may actually impede computational efficiency.
Therefore, it's important to be able to easily set the number of threads used by these libraries.
- Simple and straightforward command-line interface.
- Sets thread count for OpenBLAS, MKL, OpenMP, NumExpr, and Accelerate.
- Context manager support for temporary thread setting in Python code.
- Cross-platform compatibility (Linux, macOS, Windows).
- No dependencies.
:books: Table of Contents
:package: Installation
To install numthreads
, run the following command:
pip install numthreads
:rocket: Quick Start
Get started with numthreads
in a few seconds.
Using as a Python Module
You can also use numthreads
as a Python module:
from numthreads import set_num_threads
set_num_threads(4)
This will set the number of threads using the following environment variables:
- OpenBLAS (via
OPENBLAS_NUM_THREADS
) - MKL (via
MKL_NUM_THREADS
) - OpenMP (via
OMP_NUM_THREADS
) - NumExpr (via
NUMEXPR_NUM_THREADS
) - Accelerate (via
VECLIB_MAXIMUM_THREADS
)
or use it as a context manager:
from numthreads import num_threads
with num_threads(4):
pass
[!WARNING]
Since environment variables are global and typically need to be set before importing any libraries, it's recommended to set the number of threads at the beginning of your Python script.
To set OMP (OpenMP) threads at any time, you can use omp_set_num_threads
or the omp_num_threads
context manager:
from numthreads import omp_set_num_threads
omp_set_num_threads(4)
or
from numthreads import omp_num_threads
with omp_num_threads(4):
pass
Command Line Interface
After installing numthreads
, you can easily set the number of threads used by supported libraries via the command line. For example, to print the command to set the number of threads to 4, run:
numthreads 4
export OPENBLAS_NUM_THREADS=4 ; export MKL_NUM_THREADS=4 ; export OMP_NUM_THREADS=4 ; export NUMEXPR_NUM_THREADS=4 ; export VECLIB_MAXIMUM_THREADS=4
Unix-like Systems (Linux, macOS, WSL)
To apply the settings in your shell:
eval $(numthreads <number_of_threads>)
Windows (PowerShell)
In PowerShell, use:
Invoke-Expression $(numthreads <number_of_threads>)
:question: Getting Help
For more information, or to report issues, please visit numthreads GitHub repository.