Я новичок в Python. Недавно я пытался использовать скрипт Python для вызова консольного исполняемого файла, который требует много времени. Я позволю exe вызываться столько раз, сколько может позволить ЦП. И когда exe закончит свою работу. Это должно освободить ЦП для других новых заданий. Поэтому я думаю, что мне может понадобиться механизм управления несколькими процессами.
Поскольку многопроцессорность может вызывать только вызываемую функцию python. Он не может напрямую вызывать консольный exe. Я завернул subprocess.Popen(cmd) в функцию python. Однако после того, как я это сделал, я обнаружил, что перед использованием multiprocessing.Process.start(). Экзешник уже запущен. И проблема в том, что до того, как он закончит то, что он делает (нужно много времени), он не вернет мне контроль. Программа зависла в ожидании. Это не то, чего я хочу.
Я публикую коды, как показано ниже:
import sys
import os
import multiprocessing
import subprocess
def subprocessExe(cmd):
return subprocess.call(cmd, shell=False, stdout=subprocess.PIPE, \
stderr=subprocess.PIPE,creationflags=0x08000000)
if __name__ == '__main__':
p = multiprocessing.Process(target=self.subprocessExe(exeFileName))
p.start()
print p, p.is_alive()
Спасибо за уделенное время!