[Python] leggere lo standard output di un programma esterno

Giovanni Marco Dall'Olio dalloliogm a gmail.com
Ven 1 Giu 2012 10:12:01 CEST


2012/6/1 Matteo Perini <perini.matteo a gmail.com>

>  Il 01/06/2012 09:31, Giovanni Marco Dall'Olio ha scritto:
>
> de nada... mi hanno fatto notare che mi sono dimenticato le parentesi
> quadre:
>
>    >>> myoutput = subprocess.check_output(['ls', '-a']
>
> 2012/6/1 Matteo Perini <perini.matteo a gmail.com>
>
>> myoutput = subprocess.check_output('ls', '-a')
>
>
>  Si ma quello non è assolutamente un problema ;)
>
> Avrei un altra domanda invece... se posso.
> con subprocess chiamo molte volte in sequenza lo stesso comando e non
> riscontro nessun problema perchè il comando termina prima che venga
> richiamato nuovamente.
> Se però contemporaneamente lo richiamo tramite un "button" della gui
> ottengo errore e si blocca tutto.
> Questo succede perchè all'interno del comando che lancio viene richiamata
> una videocamera che, se è già attiva in un altra istanza del programma,
> risulterà busy.
> C'è un modo per controllare se un programma è in running sul SO?
> E' una cosa che secondo voi posso gestire con try except?
>

Io non sono molto esperto di programmazione di sistema, pero mi vengono in
mente un paio di  modi per risolvere il problema:

  * usare un .lock file, ovvero fare in modo che la applicazione crei un un
file temporaneo quando si avvia e che lo distrugga quando termina. Per
esempio, firefox usa (o usava) questo sistema.
  * su un sistema unix, lanciare subprocess.check_output("ps aux") e
verificare se l'applicazione è in esecuzione
  * forse si puó usare anche un try-except, peró potrebbe essere difficile
distinguere se la videocamera non risponde perché è occupata o se invece
non risponde perché ci sono altri problemi, e.g. non è collegata.

Probabilmente esistono soluzioni piú eleganti che permettono di definire
code di jobs ed eseguire il comando quando la videocamera si libera, peró
non ti saprei consigliare una libreria particolare.





> Ciao
> e grazie di nuovo.
> Matteo
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>


-- 
Giovanni Dall'Olio, phd student
IBE, Institut de Biologia Evolutiva, CEXS-UPF (Barcelona, Spain)

My blog on bioinformatics: http://bioinfoblog.it
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20120601/98e5b70e/attachment.html>


Maggiori informazioni sulla lista Python