Почему Shared Value в Python создает дополнительные процессы - PullRequest
0 голосов
/ 06 июля 2018

Обычно, когда я запускаю новый процесс, у меня будет только 1 внутрипроцессный код Python. Но когда я использую разделяемую память (shared value), Python создаст еще один новый процесс помимо моего собственного процесса.

Образец (показывает 1 процесс):

p = multiprocessing.Process(target=mytarget)
p.daemon = True
p.start()

Пример (показывает 2 процесса, в то время как я породил только 1 процесс):

shared = Manager().Value(int, 0)
p = multiprocessing.Process(target=mytarget, args=(shared))
p.daemon = True
p.start()

Есть ли способ избежать создания новых дополнительных процессов в Python?

1 Ответ

0 голосов
/ 06 июля 2018

Согласно документации multiprocessing.Manager вызов Manager() создает отдельный серверный процесс, который отвечает за управление объектами, общими для этого менеджера. Так что это тот дополнительный процесс, который вы можете увидеть.

Я не очень внимательно изучал документацию, но вы можете попробовать альтернативный способ использования разделяемой памяти, например объекты общего типа ctypes вроде multiprocessing.Value или multiprocessing.Array

...