Avoid using internal functions/object with multiprocessing #843
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.
A Multiprocessing start method is the technique used by the Multiprocessing library to start child processes in Python.
There are three start methods:
Each OS has a list of supported start methods:
Spawn not only is the most supported, but as per recent investigations of the devs of the Multiprocessing library, is the most secure on all the OS.
Spawn method makes use of the Pickle library for starting the new subprocesses and Pickle is unable to process internal objects and functions.
Get rid an internal function (handler inside the make_logging_handler method of the Command class) and use a callable object instead.
Consider substituting internal objects and functions with Pickle compliant options all around the code and eventually enforce the usage of the spawn method.