витая и многопроцессорная Python - PullRequest
3 голосов
/ 28 января 2012

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

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

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

Дудд

Ответы [ 2 ]

0 голосов
/ 28 января 2012

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

0 голосов
/ 28 января 2012

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

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

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

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

error = os.system('ls &')

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

...