#python #jobs #subprocess #parallel-processing
#python #Вакансии #подпроцесс #параллельная обработка
Вопрос:
привет, мне нужны некоторые рекомендации, как написать программу, которая выполняет другую программу на Python, но максимум, например, 6 раз одновременно, и всегда стараться, чтобы было запущено 6 процессов, даже если один заканчивается
также я хотел бы знать, что происходит с этими процессами, но я не хочу ждать завершения какого-либо процесса
каков pid только что созданного процесса? и он все еще работает? или произошла ошибка? или это завершится успешно?
какой-нибудь менеджер заданий…
import subprocess
def start():
proc = {}
for i in range (0,6):
proc[i] = subprocess.Popen(
['python', 'someprogramm.py', '--env', 'DEVELOPMENT', '-l'],
shell = True,
stdout = subprocess.PIPE,
stderr = subprocess.STDOUT
)
if __name__ == '__main__':
start()
Ответ №1:
Используйте сельдерей.
Комментарии:
1. я попробовал, и это идеально соответствует моим потребностям, я рекомендовал это всем. Спасибо
Ответ №2:
Взгляните на супервизор. Похоже, он будет делать то, что вы хотите.
Ответ №3:
Возможно, вы можете попробовать использовать модуль многопроцессорной обработки, он может обрабатывать пул рабочих процессов, который кажется похожим на то, чего вы пытаетесь достичь.
Ответ №4:
Вы можете использовать poll()
метод, чтобы проверить, все еще выполняется ли процесс. Вам пришлось бы перебирать каждый процесс и проверять, выполняется ли он, а в противном случае запускать новый процесс.