Я пытаюсь создать дочерний процесс в python 3.8.0 с использованием модуля многопроцессорности без наследования родительской памяти. Для этого я использую метод запуска спауна mp.set_start_method('spawn')
. Но использование памяти дочерним процессом почти такое же, как и у родительского процесса. Фрагменты кода ниже
Я использую общий код для тестирования Как я могу ограничить объем многопроцессорного процесса?
memtest.py
import multiprocessing as mp
import numpy as np
def foo(x):
import time
time.sleep(60)
if __name__ == "__main__":
mp.set_start_method('spawn')
dont_inherit = np.ones((500, 100))
for x in range(3):
mp.Process(target=foo, args=(x,)).start()
запустить, используя python3 memtest.py
использование памяти сверху
449m 28m 14m S 0.0 0.2 0:00.44 python3 memtest.py
34904 10m 5816 S 0.0 0.1 0:00.03 /srv/env/bin/python3 -c from multiprocessing.resource_tracker import main;main(5)
252m 26m 13m S 0.0 0.2 0:00.26 /srv/env/bin/python3 -c from multiprocessing.spawn import spawn_main; spawn_main(tracker_fd=6, pipe_handle=20) --multiprocessing-fork
252m 27m 13m S 0.0 0.2 0:00.21 /srv/env/bin/python3 -c from multiprocessing.spawn import spawn_main; spawn_main(tracker_fd=6, pipe_handle=22) --multiprocessing-fork
252m 26m 13m S 0.0 0.2 0:00.23 /srv/env/bin/python3 -c from multiprocessing.spawn import spawn_main; spawn_main(tracker_fd=6, pipe_handle=24) --multiprocessing-fork
Я использую virtualenv с python3 .8.0 на ubuntu18.04
$ python3 --version
Python 3.8.0
Что неправильный подход к созданию дочернего процесса? Мне нужно создать множество дочерних процессов, которые должны быть легкими, я изначально полагал, что использование метода создания mp сделает это, но, похоже, это не работает.