Patch joblib to allow nested parallelism
Project description
nest-joblib
Patch joblib to allow nested parallelism.
Installation
Install this via pip (or your favourite package manager):
pip install nest-joblib
Usage
from nest_joblib import apply
apply()
With the above code, LokyBackend supports nested-parallelism.
Advanced Usage
The following joblib specification of not doing nested-parallelism may be inefficient in an environment with sufficient memory.
joblib/_parallel_backends.py
:
def get_nested_backend(self):
"""Backend instance to be used by nested Parallel calls.
By default a thread-based backend is used for the first level of
nesting. Beyond, switch to sequential backend to avoid spawning too
many threads on the host.
"""
nesting_level = getattr(self, 'nesting_level', 0) + 1
if nesting_level > 1:
return SequentialBackend(nesting_level=nesting_level), None
else:
return ThreadingBackend(nesting_level=nesting_level), None
After calling nest_joblib.apply()
, when joblib.parallel.register_parallel_backend(name, backend)
is called, a subclass of backend
with modified get_nested_backend
is dynamically generated and registered with the name f"nested-{name}"
.
from joblib.parallel import parallel_backend
from nest_joblib import apply
from ray.util.joblib import register_ray
# use LokyBackend
apply()
# use DaskDistributedBackend
apply()
parallel_backend("nested-dask")
# use RayBackend
apply()
register_ray()
parallel_backend("nested-ray")
# use custom backend
from joblib.parallel import LokyBackend
apply()
class MyBackend(LokyBackend):
pass
register_parallel_backend("custom", MyBackend)
parallel_backend("nested-custom")
Contributors ✨
Thanks goes to these wonderful people (emoji key):
34j 💻 🤔 📖 |
This project follows the all-contributors specification. Contributions of any kind welcome!
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nest_joblib-0.1.5.tar.gz
.
File metadata
- Download URL: nest_joblib-0.1.5.tar.gz
- Upload date:
- Size: 6.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/42.0 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/2.2.1 tqdm/4.66.2 importlib-metadata/7.0.1 keyring/24.3.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b7e3769aa93601de446ccdfe717ef4988ea251e0d6ae67c05832595165bd29e |
|
MD5 | 4cbe50500396741350a477ad21f0e5fe |
|
BLAKE2b-256 | 18630bdc695b41f32db241d33439698ac605bcd5f40f53dd24a618b9264ea06f |
File details
Details for the file nest_joblib-0.1.5-py3-none-any.whl
.
File metadata
- Download URL: nest_joblib-0.1.5-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/42.0 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/2.2.1 tqdm/4.66.2 importlib-metadata/7.0.1 keyring/24.3.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4f9d56b9ac589e125cbfc9a643aae56345b742bf920a1b65f710d0eb2278a67 |
|
MD5 | 0b7fc9e68624d63af2f3736078afd6b9 |
|
BLAKE2b-256 | c8e577d63852d7212cc14d0e5b657a6a409dd0b9495bf186faa1a896ea98ea21 |