Как выкрутить и мультипроцессировать. Процесс создания зомби? - PullRequest
3 голосов
/ 06 июля 2011

В Python, используя витой цикл, многопроцессорную обработку и многопроцессорную обработку. Можно ли создать процесс зомби. И если да, то как?

1 Ответ

6 голосов
/ 06 июля 2011

A zombie - это процесс, который завершен, но завершение которого еще не было замечено процессом, который его запустил.Процесс Twisted обязан пожинать своих потомков.

Если вы начнете процесс с spawnProcess, все всегда должно работать как положено.Однако, как описано в ошибка № 733 в Twisted (которая давно исправлена), существует множество неприятных крайних случаев, когда вы хотите использовать Twisted с другими функциями, которые порождают процессы, как исторически API Pythonзатрудняет взаимодействие между обработчиками сигналов.

Это все исправлено в последних версиях кода, но я полагаю, что вы все еще можете столкнуться с этой ошибкой в ​​следующих условиях:

  1. Вывы используете версию Twisted ранее, чем 10.1.
  2. Вы используете версию Python ранее, чем 2.6.
  3. Вы не создаете собственные модули расширения Twisted (если вы работаете с разработкойоформить заказ или распаковать архив, а не установленную версию, вы можете исправить это с помощью python setup.py build_ext -i).
  4. Вы используете такой модуль, как popen или subprocess.

Надеемсяобновление Twisted или запуск соответствующей команды решит вашу непосредственную проблему, но вы все равно должны рассмотреть возможность использования spawnProcess, так как это позволяет вам лечитьвывод процесса как обычного события в цикле событий реактора.

...