Прежде всего я объясню структуру моих сценариев:
Функция 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)
Теперь я столкнулся с проблемами:
- Он печатает только первый объединенный оператор печати, но все процессы запущены успешно. (Это означает, что объединение для всех процессов не выполняется).
- Во-вторых, некоторые процессы превращаются в зомбы ie, когда они выполняются с многопроцессорной обработкой, но без многопроцессорной обработки, когда функции выполняются внешне, работают очень хорошо (поэтому здесь я Я знаю, что соединение не может работать должным образом из-за какой-то проблемы, с нашими функциями все в порядке).
- В-третьих, в моей ситуации я должен использовать многопроцессорность. Бассейны или многопроцессорные. Процесс у меня работает нормально? Любое предложение?
- В-четвертых, я хочу знать, есть ли альтернативы этому, кроме многопоточности и многопроцессорности. Пулы, может быть?
Я также пробовал другую вещь, но она не работала, как:
set_start_context('spawn')
Поскольку он индивидуально запускает каждый процесс извне, как мы запускаем сценарии через popen извне, в соответствии с мои знания
Примечание:
Я использую Ubuntu 16.04. У меня есть сценарий, где я могу использовать многопроцессорность. Процесс, многопроцессорность. Пул и что-то, что работает как многопроцессорная, но не может использовать многопоточность здесь.