Add multiprocessing compatibility wrapper for macOS/Windows#4734
Open
gamesh411 wants to merge 2 commits intoEricsson:masterfrom
Open
Add multiprocessing compatibility wrapper for macOS/Windows#4734gamesh411 wants to merge 2 commits intoEricsson:masterfrom
gamesh411 wants to merge 2 commits intoEricsson:masterfrom
Conversation
Add a Pool wrapper class that provides ProcessPoolExecutor-like API for multiprocess.Pool on darwin and win32 platforms. This ensures consistent interface across platforms by: - Accepting max_workers parameter (converted to processes) - Supporting context manager protocol (with statement) - Implementing map() with multiple iterables support - Providing close() and join() methods This allows code to use max_workers consistently on all platforms without platform-specific conditionals. The platform-specific multiprocessing implementation is necessary because: - On macOS/Windows: The multiprocess package (third-party) is used instead of standard multiprocessing due to reliability issues (see commits 803e446, d56e216) - On Linux: ProcessPoolExecutor from standard library is used - The compatibility layer bridges API differences between these implementations
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #4733
This PR adds a compatibility wrapper for
multiprocess.Poolon macOS/Windows platforms that provides aProcessPoolExecutor-like API, ensuring consistent interface across platforms.Changes
Poolwrapper class that acceptsmax_workersparameter (converted toprocessesformultiprocess.Pool)withstatement)map()with multiple iterables support (matchingProcessPoolExecutor.map())close()andjoin()methodsThis allows code to use
max_workersconsistently on all platforms without platform-specific conditionals.Background
The platform-specific multiprocessing implementation is necessary because:
multiprocesspackage (third-party) is used instead of standardmultiprocessingdue to reliability issues (see commits 803e446, d56e216)ProcessPoolExecutorfrom standard library is used