Ho bisogno di eseguire un comando shell in modo asincrono da uno script Python. Con questo voglio dire che voglio che il mio script Python continui a funzionare mentre il comando esterno si spegne e fa tutto ciò che deve fare.Come posso eseguire un comando esterno in modo asincrono da Python?
ho letto questo post:
Allora sono andato via e ha fatto alcuni test, e sembra che os.system()
farà il lavoro a condizione che io uso &
alla fine del comando in modo da non dover aspettare che ritorni. Quello che mi chiedo è se questo è il modo giusto per realizzare una cosa del genere? Ho provato commands.call()
ma non funzionerà per me perché blocca sul comando esterno.
Per favore fatemi sapere se usare os.system()
per questo è consigliabile o se dovrei provare qualche altro percorso.
È anche possibile utilizzare poll() per verificare se il processo secondario è stato terminato o utilizzare wait() per attendere che termini. –
Adam, molto vero, anche se potrebbe essere preferibile usare communic() per attendere perché ha una migliore gestione dei buffer in/out e ci sono situazioni in cui le inondazioni potrebbero bloccarle. –
Adam: i documenti dicono "Avviso Questo sarà deadlock se il processo figlio genera un output sufficiente a una pipe stdout o stderr in modo tale da bloccare l'attesa del buffer di pipe del sistema operativo per accettare più dati. –