1# Python* API for Intel® oneAPI Threading Building Blocks (oneTBB) . 2 3## Overview 4It is a preview Python* module which unlocks opportunities for additional performance in 5multi-threaded and multiprocess Python programs by enabling threading composability 6between two or more thread-enabled libraries like Numpy, Scipy, Sklearn, Dask, Joblib, and etc. 7 8The biggest improvement can be achieved when a task pool like the ThreadPool or Pool from the Python 9standard library or libraries like Dask or Joblib (used either in multi-threading or multi-processing mode) 10execute tasks calling compute-intensive functions of Numpy/Scipy/Sklearn/PyDAAL which in turn are 11parallelized using Intel® oneAPI Math Kernel Library or/and oneTBB. 12 13The module implements Pool class with the standard interface using oneTBB which can be used to replace Python's ThreadPool. 14Thanks to the monkey-patching technique implemented in class Monkey, no source code change is needed in order to enable threading composability in Python programs. 15 16For more information and examples, please refer to [online blog](http://software.intel.com/en-us/blogs/2016/04/04unleash-parallel-performance-of-python-programs). 17 18## Directories 19 - **rml** - The folder contains sources for building the plugin with cross-process dynamic thread scheduler implementation. 20 - **tbb** - The folder contains Python module sources. 21 22## Files 23 - **setup.py** - Standard Python setup script. 24 - **TBB.py** - Alternative entry point for Python module. 25 26## CMake predefined targets 27 - `irml` - compilation of plugin with cross-process dynamic thread scheduler implementation. 28 - `python_build` - building of oneTBB module for Python. 29 30## Command-line interface 31 32 - `python3 -m tbb -h` - Print documentation on command-line interface. 33 - `pydoc tbb` - Read built-in documentation for Python interfaces. 34 - `python3 -m tbb your_script.py` - Run your_script.py in context of `with tbb.Monkey():` when oneTBB is enabled. By default only multi-threading will be covered. 35 - `python3 -m tbb --ipc your_script.py` - Run your_script.py in context of `with tbb.Monkey():` when oneTBB enabled in both multi-threading and multi-processing modes. 36 - `python3 setup.py build -b<output_directory_path> -f check` - Build oneTBB module for Python. (Prerequisites: built and sourced oneTBB and IRML libraries) 37 - `python3 setup.py build -b<output_directory_path> build_ext -I<path_to_tbb_includes> -L<path_to_prebuilt_libraries> install -f <additional_flags> ` - Build and install oneTBB module for Python. (Prerequisites: built oneTBB and IRML libraries) 38 - `python3 -m TBB test` - run test for oneTBB module for Python. 39 - `python3 -m tbb test` - run test for oneTBB module for Python. 40 41## System Requirements 42 - The Python module was not tested on older versions of Python thus we require at least Python and 3.5 or higher. 43 - SWIG must be of version 3.0.6 or higher. 44