Je tente de démarrer un processus Java qui doit prendre beaucoup de temps, en utilisant le module subprocess
de python. Ce que je fais réellement utilise le module multiprocessing
pour lancer un nouveau processus, et en utilisant ce processus, utilisez le module subprocess
pour exécuter java -jar
.Démarrage du processus en cours d'exécution à l'aide du module de sous-processus
Cela fonctionne correctement, mais lorsque je démarre le nouveau processus, le processus java remplace le processus python exécutant python Process
. Je voudrais java
s'exécuter en tant que processus enfant de telle sorte que lorsque le processus qui a démarré un nouveau multiprocessing.Process
est mort, le processus qui exécute java
serait également mort.
Est-ce possible?
Merci.
Edit: Voici un code pour clarifier ma question:
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
Je veux que le processus en cours d'exécution run_task
être tué en même temps que le processus en cours d'exécution java
lorsque le processus exécutant la boucle while atteint la ligne break
. Est-ce possible?
Peut-être que j'ai mal compris la question, mais pourquoi avez-vous besoin module 'multiprocessing'? Vous pouvez démarrer des processus fils avec les fonctions 'subprocess' seules. – Philipp
Je dois démarrer le nouveau processus et continuer à exécuter la boucle while pour démarrer de nouveaux processus. – simao