0

Assume the following python-program from the official docs (The Process class):

from multiprocessing import Process

def f(name):
    print('hello', name)

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

Running this code against my 3.7.7 interpreter on my Windows machine works, as expected, without any problems. However, running the same code against a Subinterpreter created in C++ fails with the following error (no Exception actually, the following error just gets printed to the console):

unrecognised option '-c'

I assume that the reason for this error is to be found in spawn.py (within the multiprocessing module, line 89):

...
return [_python_exe] + opts + ['-c', prog, '--multiprocessing-fork']
...

I could create my new process via Popen. This works, but the spawned process should be a child-process, not a completely independent process.

My question:

Why does this error occur? Is there any way to spawn a child process within a Subinterpreter via multiprocessing.Process?

Thank you!

UPDATE 1

As suggested, adding freeze_support fixes the error, but a new one occurs:

unrecognised option '--multiprocessing-fork'

Moritz Schmidt
  • 2,635
  • 3
  • 27
  • 51

0 Answers0