[New-bugs-announce] [issue29828] Allow registering after-fork initializers in multiprocessing

Antoine Pitrou report at bugs.python.org
Thu Mar 16 12:45:39 EDT 2017


New submission from Antoine Pitrou:

Currently, multiprocessing has hard-coded logic to re-seed the Python random generator (in the random module) whenever a process is forked.  This is present in two places: `Popen._launch` in `popen_fork.py` and `serve_one` in `forkserver.py` (for the "fork" and "forkserver" spawn methods, respectively).

However, other libraries would like to benefit from this mechanism.  For example, Numpy has its own random number generator that would also benefit from re-seeding after fork().  Currently, this is solvable using multiprocessing.Pool which has an `initializer` argument.  However, concurrent.futures' ProcessPool does not offer such facility; nor do other ways of launching child processes, such as (simply) instantiating a new Process object.

Therefore, I'd like to propose adding a new top-level function in multiprocessing (and also a new Context method) to register a new initializer function for use after fork().  That way, each library can add its own initializers if desired, freeing users from the burden of doing so in their applications.

----------
components: Library (Lib)
messages: 289721
nosy: davin, pitrou, sbt
priority: normal
severity: normal
stage: needs patch
status: open
title: Allow registering after-fork initializers in multiprocessing
type: enhancement
versions: Python 3.7

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue29828>
_______________________________________


More information about the New-bugs-announce mailing list