Using Python on a fork-less POSIX-like OS

Stephan Houben stephanh42 at gmail.com.invalid
Tue Jul 31 08:14:40 EDT 2018


Op 2018-07-29, Terry Reedy schreef <tjreedy at udel.edu>:

> multiprocessing module uses 'spawn' rather than 'fork' on Windows and it 
> has an option to use 'spawn' even on *nix.  I presume the latter refers 
> to posix_spawn.  You might want to check the multiprocessing code to see 
> what *it* is doing 'under the covers'.

Actually, the only place posix_spawn is currently used in Python is in
some experimental and currently-disabled code in the posix module.

`spawn' in multiprocessing only refers to a fork/exec combination 
(on Posix, at least), as opposed to `fork' which only does a fork.

Note that posix_spawn cannot provide full subprocess functionality
(obviously preexec_fn, but also not start_new_session).
So it's a hard sell to add a posix_spawn special case there, since 
a generic fork/exec would need to be maintained anyway.

(The same reason is also why most shells such as bash, zsh, don't bother
with posix_spawn.)

Stephan



More information about the Python-list mailing list