параллельное программирование на питоне - PullRequest
2 голосов
/ 03 мая 2011

Привет, мне нужны некоторые рекомендации, как написать программу, которая выполняет другую программу на 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()

Ответы [ 4 ]

4 голосов
/ 03 мая 2011

Использование сельдерей .

1 голос
/ 03 мая 2011

Может быть, вы можете попробовать с многопроцессорным модулем, он может обрабатывать пул рабочих процессов , что похоже на то, что вы пытаетесь достичь.

1 голос
/ 03 мая 2011

Посмотрите на супервизор . Похоже, он будет делать то, что вы хотите.

0 голосов
/ 03 мая 2011

Вы можете использовать метод poll(), чтобы проверить, запущен ли еще процесс.Вам нужно было бы пройти через каждый процесс и проверить, выполняется ли он, а в противном случае запустить новый процесс.

...