mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00

If a preloaded module writes to stdout or stderr, and the stream is buffered, child processes will inherit the buffered data after forking. Attempt to prevent this by flushing the streams after preload. Co-authored-by: Mikhail Efimov <efimov.mikhail@gmail.com> Co-authored-by: Victor Stinner <vstinner@python.org>
15 lines
486 B
Python
15 lines
486 B
Python
import multiprocessing
|
|
import sys
|
|
|
|
modname = 'preloaded_module'
|
|
if __name__ == '__main__':
|
|
if modname in sys.modules:
|
|
raise AssertionError(f'{modname!r} is not in sys.modules')
|
|
multiprocessing.set_start_method('forkserver')
|
|
multiprocessing.set_forkserver_preload([modname])
|
|
for _ in range(2):
|
|
p = multiprocessing.Process()
|
|
p.start()
|
|
p.join()
|
|
elif modname not in sys.modules:
|
|
raise AssertionError(f'{modname!r} is not in sys.modules')
|