Multithreading: num_threads and no-GIL #69
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds support for the
num_threads
parameter and GIL releasing in the Encoder/Decoder.For batch conversions with ample memory, transcoding multiple files concurrently is often more efficient, but requires reducing or disabling libjxl's parallelism. Releasing the GIL enables concurrent jxl operations in a single python process.
Encoder parallelism can be configured via
Image.save(num_threads=<n>)
. The decoder supports this too, though Pillow lacks a direct way to pass arguments. A settable module constant might be an option—open to feedback on this.Behavior mirrors
cjxl
's--num_threads
parameter: