voglio creare molti processi, ogni processo viene eseguito 5 secondi dopo che un processo precedente, vale a dire, l'intervallo di tempo tra ogni processo inizia è di 5 secondi, in modo che: run processo 1 attendere 5 secondi processo run 2 attendere 5 secondi processo esecuzione 3 attendere 5 secondi .....come recuperare processo dal pool di processi di pitone
come:
for i in range(10):
p = multiprocessing.Process(target=func)
p.start()
sleep(5)
#after all child process exit
do_something()
ma voglio chiamare fa_qualcosa() dopo tutto il processo di uscita non so come fare la sincronizzazione qui
con una piscina libary pitone, posso avere
pool = multiprocessing.Pool(processes=4)
for i in xrange(500):
pool.apply_async(func, i)
pool.close()
pool.join()
do_something()
ma in questo modo, 4 processi verranno eseguiti simultaneamente, non riesco a decidere l'intervallo di tempo tra i processi, è possibile creare un pool di processi e poi prendere ogni processo, qualcosa come
pool = multiprocessing.Pool(processes=4)
for i in xrange(500):
process = pool.fetch_one()
process(func, i)
time.sleep(5)
pool.close()
pool.join()
do_something()
ci sono snippet di una libreria o di un codice sorgente che soddisfano le mie esigenze? grazie
Forse potresti aggiungere un argomento alla tua funzione che è il numero di secondi di attesa prima dell'elaborazione? E calcola quel valore come 5 * i? – mdscruggs
vuoi chiamare 'func' ogni 5 secondi 500 volte? Perché il ritardo? Quanto dura una chiamata 'func'? Vuoi limitare il numero di chiamate simultanee (simultanee)? Cosa succede se aggiungete 'time.sleep()' dopo 'apply_async()'? Cosa vuoi che succeda, invece? – jfs
una chiamata 'func' dura per 25 secondi. e voglio chiamare 'func' ogni 5 secondi per molte volte, forse 500 o 1000. – misteryes