Come usare Python per avviare più programmi contemporaneamente?

-3

Sto tentando di scrivere uno script python che rimuova parte della noia delle mie azioni quotidiane. Nello specifico, ho sempre bisogno di eseguire Eclipse, Java VisualVM e un container mobile.

Avevo programmato di importare il modulo os e di eseguire solo alcuni comandi os.system per far funzionare tutto:

# set_up.py
# Starts up Eclipse, Java VisualVM, and the docker file s3_dynamodb.yml

import os

os.system("./workspace/eclipse/eclipse")

os.system("./../../usr/bin/jvisualvm")

os.system("docker-compose -f s3_dynamodb.yml up")

Sto incontrando problemi in cui il terminale inizia a eseguire eclipse e non continuerà con il programma fino a quando l'istanza di Eclipse non verrà terminata. Quindi passa a VisualVM e attende che sia chiuso, ecc. Mi chiedevo se esistesse un modo per eseguire tutti e tre questi comandi (beh almeno eclipse e visualVM) come se avessi fatto clic sull'icona?

    
posta Steven C. Eisemann 21.07.2016 - 18:34
fonte

2 risposte

0

Se vuoi solo lanciare i comandi, non hai bisogno di Python per questo. Un semplice script di Bash è in gran parte sufficiente. Nota il & alla fine di ogni riga.

workspace/eclipse/eclipse &
../../usr/bin/jvisualvm &
docker-compose -f s3_dynamodb.yml up &

Se, per qualche motivo, non puoi usare Bash, Python può farlo anche con popen :

import subprocess

p1 = subprocess.Popen(['workspace/eclipse/eclipse'])
p2 = subprocess.Popen(['../../usr/bin/jvisualvm'])
p3 = subprocess.Popen(['docker-compose', '-f', 's3_dynamodb.yml', 'up'])

p3.terminate()
p2.terminate()
p1.terminate()
    
risposta data 21.07.2016 - 18:47
fonte
0

La soluzione al mio problema era semplice come aggiungere & alla fine di ogni riga.

Ad esempio, os.system("./workspace/eclipse/eclipse &")

    
risposta data 21.07.2016 - 19:02
fonte

Leggi altre domande sui tag