Я пытаюсь запустить процесс Java, который должен длиться долго, используя модуль subprocess
python.Начать длительный процесс с использованием модуля подпроцесса
Что я на самом деле делаю, используя модуль multiprocessing
, чтобы начать новый процесс, и используя этот процесс, используйте модуль subprocess
для запуска java -jar
.
Это хорошо работает, но когда я запускаю новый процесс, процесс java заменяет процесс python, выполняющий python Process
. Я хотел бы, чтобы java
выполнялся как дочерний процесс таким образом, что когда процесс, который запустил новый multiprocessing.Process
, умер, процесс, запущенный java
, тоже погибнет.
Возможно ли это?
Спасибо.
Edit: Вот код, чтобы прояснить мой вопрос:
def run_task():
pargs = ["java -jar app.jar"]
p = Popen(pargs)
p.communicate()[0]
return p
while(True):
a = a_blocking_call()
process = Process(target=run_task)
process.start()
if not a:
break
Я хочу, чтобы этот процесс работает run_task
быть убит вместе с процессом работает java
, когда процесс выполнения время цикла достигает break
линии. Это возможно?
Может быть, я неправильно понял вопрос, но зачем вам нужен 'multiprocessing' модуль? Вы можете запускать дочерние процессы только с помощью функций 'subprocess'. – Philipp
Мне нужно запустить новый процесс, а затем продолжить цикл while для запуска новых процессов. – simao