Процесс становится зомби ie - Python3 Многопроцессорная - PullRequest
0 голосов
/ 05 января 2020

Прежде всего я объясню структуру моих сценариев:

Функция Script1 - (call) -> Script2, и эта функция дополнительно вызывает 12-15 функций в различных сценариях посредством многопроцессорной обработки, и в тех функции, некоторые из которых имеют бесконечные циклы, а некоторые имеют многопоточность.
Функция, которая содержит многопоточность, дополнительно вызывает некоторые функции с бесконечными циклами в них.

Код многопроцессорной обработки выглядит так:

Script1.py
def func1():
   #some infinite functionality
Script2.py
def func2():
   #some infinite functionality
Script3.py
def func3():
   #Thread calling
#..
#..
#and so on...

from multiprocessing import Process
from Script1 import func1
from Script2 import func2
from Script3 import func3
process=[]
process.append(Process(target=func1))
process.append(Process(target=func2))
process.append(Process(target=func3))
process.append(Process(target=func4))
process.append(Process(target=func5))
process.append(Process(target=func6))
# ..
# ..
# and so on.

for p in process:
    p.start()
    print("process started:", p)

for p in process:
    p.join()
    print("process joined:", p)

Теперь я столкнулся с проблемами:

  1. Он печатает только первый объединенный оператор печати, но все процессы запущены успешно. (Это означает, что объединение для всех процессов не выполняется).
  2. Во-вторых, некоторые процессы превращаются в зомбы ie, когда они выполняются с многопроцессорной обработкой, но без многопроцессорной обработки, когда функции выполняются внешне, работают очень хорошо (поэтому здесь я Я знаю, что соединение не может работать должным образом из-за какой-то проблемы, с нашими функциями все в порядке).
  3. В-третьих, в моей ситуации я должен использовать многопроцессорность. Бассейны или многопроцессорные. Процесс у меня работает нормально? Любое предложение?
  4. В-четвертых, я хочу знать, есть ли альтернативы этому, кроме многопоточности и многопроцессорности. Пулы, может быть?

Я также пробовал другую вещь, но она не работала, как:

set_start_context('spawn')

Поскольку он индивидуально запускает каждый процесс извне, как мы запускаем сценарии через popen извне, в соответствии с мои знания

Примечание:
Я использую Ubuntu 16.04. У меня есть сценарий, где я могу использовать многопроцессорность. Процесс, многопроцессорность. Пул и что-то, что работает как многопроцессорная, но не может использовать многопоточность здесь.

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