Bug report
After python3.11 changes around frozen imports, when using multiprocessing contexts other than fork, the newly added -Xfrozen_modules=off isn't passed to spawned process interpreters.
Simple snippet demonstrating the issue:
"""
$ python -Xfrozen_modules=off test.py
main: {'frozen_modules': 'off'}
forkserver: {}
spawn: {}
fork: {'frozen_modules': 'off'}
"""
import sys
import multiprocessing
def xoptions():
return sys._xoptions
def main():
print('main:', xoptions())
for ctx in ('forkserver', 'spawn', 'fork'):
with multiprocessing.get_context(ctx).Pool(1) as pool:
print(f'{ctx}:', pool.apply(xoptions))
if __name__ == '__main__':
main()
The issue seems to be subprocess._args_from_interpreter_flags not honoring frozen_modules key from sys._xoptions.
$ python -Xfrozen_modules=off -c 'import subprocess;print(subprocess._args_from_interpreter_flags())'
[]
Your environment
python 3.11.4
Linked PRs
Bug report
After python3.11 changes around frozen imports, when using multiprocessing contexts other than
fork, the newly added-Xfrozen_modules=offisn't passed to spawned process interpreters.Simple snippet demonstrating the issue:
The issue seems to be
subprocess._args_from_interpreter_flagsnot honoringfrozen_moduleskey fromsys._xoptions.$ python -Xfrozen_modules=off -c 'import subprocess;print(subprocess._args_from_interpreter_flags())' []Your environment
python 3.11.4
Linked PRs