2011-01-24 6 views
0

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?

+0

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

+0

Je dois démarrer le nouveau processus et continuer à exécuter la boucle while pour démarrer de nouveaux processus. – simao

Répondre

0

Je pense que vous devriez montrer du code, on ne sait pas comment vous utilisez ensemble le sous-processus et le multitraitement. Dans la documentation, il semble que le sous-processus doit apparaître et ne pas remplacer votre nouveau processus lancé par le processus. Êtes-vous sûr que cela ne se passe pas? Un test qui montre que ce n'est pas bon.

Vous pouvez obtenir quelques conseils sur Detach a subprocess started using python multiprocessing module

Questions connexes