параллельное программирование на Python

#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() метод, чтобы проверить, все еще выполняется ли процесс. Вам пришлось бы перебирать каждый процесс и проверять, выполняется ли он, а в противном случае запускать новый процесс.