Понимание использования памяти python многопроцессорным дочерним процессом с помощью метода запуска 'spawn' - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь создать дочерний процесс в 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 сделает это, но, похоже, это не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...