является многопроцессорным Python. Процесс start () выполняет ту же работу, что и subprocess.Popen - PullRequest
1 голос
/ 25 мая 2011

Я новичок в Python. Недавно я пытался использовать скрипт Python для вызова консоли exe, что требует длительного времени. Я позволю exe вызываться столько раз, сколько позволяет процессор. И когда exe закончил свою работу. ЦП может быть выделен для других новых заданий. Поэтому я думаю, что мне может понадобиться механизм управления несколькими процессами.

Прежде чем я переключусь на многопроцессорность. Процесс я могу вызвать свой exe из подпроцесса. Открыть. Работает нормально. Однако после я перешел на многопроцессорность. Процесс. Кажется, start () не может вызвать мой exe (могу отличить производительность процессора). Кто-нибудь может дать подсказку по этому поводу? К вашему сведению, я использую следующий код.

ранее используя подпроцесс:

cmd = exeFileName + r" " + inputArguments

a = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

Теперь используется несколько процессов:

b = multiprocessing.Process(target=exeFileName,args=inputArguments)

b.start()

Как вы могли заметить, моему exe нужны входные аргументы для работы. Поэтому в коде подпроцесса я использую строку cmd для захвата всей строки. В многопроцессорном коде я нет. У него уже есть цель и встроенные аргументы. Спасибо за ваше время!

1 Ответ

5 голосов
/ 25 мая 2011

Используйте subprocess.Popen для запуска других исполняемых файлов в подпроцессе.

Используйте multiprocessing.Process для запуска вызываемых в Python (например, функций) в подпроцессе.

Два не являются взаимозаменяемыми.

...