Ответ 1
Когда вы создаете экземпляр Process
, под капотом Python выдает a fork()
. Это создает дочерний процесс, чье пространство памяти является точной копией его родителя, поэтому все существующее во время вилки копируется.
В Linux это достигается благодаря использованию "copy-on-write". На странице fork man:
fork() создает дочерний процесс, который отличается от родительского процесса в PID и PPID, а также в том, что что использование ресурсов установлено на 0. Файловые блокировки и ожидающие сигналы не наследуются.
В Linux реализована функция fork() используя страницы копирования на запись, поэтому единственное штраф, который он несет, - это время и памяти, необходимой для дублирования таблицы родительских страниц и создать уникальная структура задачи для ребенка.