python скрученный и многопроцессорный

Как можно разветвиться (через накрутку процесса) и уже крутить полностью сбросить в новый процесс. Мне нужно создать новый процесс из процесса с большим количеством реакторов, но мне нужно изменить реакторы (в новом процессе), удалив что-то и добавив что-то еще.

Например, мне нужен glib2reactor как в родительском, так и в дочернем... но Twisted уведомляет меня, что реактор уже установлен (после форка). Форк копирует родительскую память в дочернюю с каждым скрученным реактором. Как я могу «сбросить» скрученную память в дочернем?

Спасибо за помощь,

Дудда


person Diri Dudda    schedule 28.01.2012    source источник


Ответы (2)


os.fork() клонирует текущий процесс, возвращая идентификатор дочернего процесса родительскому и 0 дочернему.

if os.fork():
    "parent"
else:
    "child"

Если вы используете os.system() или модуль subprocesses, вы получаете новый процесс .

Вы можете использовать вилку & в команде os.system(), чтобы избежать блокировки.

error = os.system('ls &')

os.execv и друзья заменяют текущий процесс целевой командой.

person mdaoust    schedule 28.01.2012

Twisted поддерживает запуск произвольных дочерних процессов (включая процессы, использующие Twisted) через twisted.internet.interfaces.IReactorProcess. Подробнее о том, как его использовать, см. в инструкции по процессу.

person Jean-Paul Calderone    schedule 28.01.2012