Sto tentando di eseguire una chiamata di sottoprocesso non bloccante per eseguire uno script slave.py dal mio programma main.py. Ho bisogno di passare arg da main.py a slave.py una volta quando (slave.py) viene prima avviato tramite subprocess.call dopo che questo slave.py viene eseguito per un periodo di tempo quindi esce.Sottoprocesso non bloccante
main.py
for insert, (list) in enumerate(list, start =1):
sys.args = [list]
subprocess.call(["python", "slave.py", sys.args], shell = True)
{loop through program and do more stuff..}
E il mio script schiavo
slave.py
print sys.args
while True:
{do stuff with args in loop till finished}
time.sleep(30)
Attualmente, blocchi slave.py main.py esecuzione il resto dei suoi compiti, voglio semplicemente slave.py essere indipendente main.py, una volta Ho passato discussioni ad esso. I due script non hanno più bisogno di comunicare.
Ho trovato alcuni post sulla rete non bloccanti subprocess.call, ma la maggior parte di essi sono centrati sul richiedere la comunicazione con slave.py in un punto che attualmente non ho bisogno. Qualcuno saprebbe come implementarlo in modo semplice ...?
Grazie, sembra funzionare, tuttavia quando includo un ciclo While in slave.py sembra rimanere bloccato e non eseguire nulla nel ciclo (anche con una funzione timer.sleep() ..? – DavidJB
@mgilson: Can per favore condividi un esempio generale su come usarlo? Voglio dire come dovrebbe apparire il flusso di controllo quando lo si usa in un modo non bloccante. Lo apprezzo. – ViFI
@ViFI - Certo, ho aggiunto un esempio di utilizzo 'Popen' in modo non bloccante. – mgilson