Я столкнулся с той же проблемой и немного покопался, к сожалению, это невозможно сделать.
multiprocessing.spawn.get_command_line
устанавливает код для исполняемого файла на запустить. Это будет выглядеть примерно так:
["python2.exe" "-c" "from multiprocessing.spawn import spawn_main; spawn_main(parent_pid=16524, pipe_handle=496)" "--multiprocessing-fork"]
Поскольку multiprocessing.spawn
был переименован из multiprocessing.forking
, указанная выше строка не будет понятна Python 2. Я попытался создать фиктивную spawn.py
file, где spawn_main
вызывает forking.main
, но затем я начал получать плохие ошибки файлового дескриптора, и, поскольку класс невероятно сложен, не стоит прилагать усилия для отладки.
Получить эту работу было чрезвычайно сложно. В итоге я использовал subprocessing
для создания другого процесса python, и мне пришлось передать путь импорта модуля и имя функции для выполнения. Работа с stderr
затруднительна, поскольку не каждая «ошибка» является исключением, поэтому требовалось немного взломанного кода, чтобы определить, нужно ли повторно вызывать ошибку или игнорировать ее. Наконец, мне пришлось распечатать результат подпроцесса в кодировке base64, взять и декодировать его из stdout
, а все остальное распечатать.