Параллельное программирование с использованием многопроцессорной обработки Python и функции процесса - PullRequest
3 голосов
/ 21 июля 2010

У меня проблема с созданием параллельной программы с использованием многопроцессорной обработки.AFAIK, когда я запускаю новый процесс с использованием этого модуля (многопроцессорность), я должен сделать «os.wait ()» или «childProcess.join ()», чтобы получить его «состояние выхода».Но размещение указанных выше функций в моей программе может привести к остановке основного процесса, если что-то случится с дочерним процессом (и дочерний процесс зависнет).

Проблема в том, что если я не сделаю этого, я получу дочерние процессы, которые станут зомби (и будут перечислены как что-то вроде "python " в верхнем списке).

Есть ли способ избежать ожидания завершения дочерних процессов и создания зомби-процессов и \ или не беспокоить основной процесс о его дочерних процессах?

Ответы [ 2 ]

2 голосов
/ 03 декабря 2010

Хотя ответ ars должен решить ваши насущные проблемы, вы можете рассмотреть вопрос о сельдерее: http://ask.github.com/celery/index.html. Это относительно дружественный к разработчикам подход для достижения этих целей и многое другое.

0 голосов
/ 21 июля 2010

Возможно, вам придется предоставить больше информации или фактического кода, чтобы понять это. Вы ознакомились с документацией , в частности с разделами, помеченными как «Предупреждение»? Например, вы можете столкнуться с чем-то вроде этого:

Предупреждение : Как упоминалось выше, если дочерний процесс поместил элементы в очередь (и он не использовал JoinableQueue.cancel_join_thread ()), то этот процесс не завершится, пока все буферизованные элементы не будут покраснел к трубе.

Это означает, что если вы попытаетесь присоединиться к этому процессу, вы можете зайти в тупик, если вы не уверены, что все элементы, помещенные в очередь, были использованы. Аналогично, если дочерний процесс не является демоническим, то родительский процесс может зависать при выходе, когда он пытается присоединиться ко всем своим недемоническим дочерним процессам.

Обратите внимание, что в очереди, созданной с помощью диспетчера, этой проблемы нет. См. Руководство по программированию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...