Sto provando a eseguire tre funzioni (ciascuna può richiedere fino a 1 secondo per l'esecuzione) ogni secondo. Vorrei quindi memorizzare l'output di ogni funzione e scriverlo in file separati.Eseguire più funzioni ogni secondo, scrivere il risultato nel file
Al momento sto usando Timer
s per la mia gestione del ritardo. (Potrei sottoclasse Thread
, ma che sta diventando un po 'complicato per questo semplice script)
def main:
for i in range(3):
set_up_function(i)
t = Timer(1, run_function, [i])
t.start()
time.sleep(100) # Without this, main thread exits
def run_function(i):
t = Timer(1, run_function, [i])
t.start()
print function_with_delay(i)
Qual è il modo migliore per gestire l'output di function_with_delay? Aggiungi il risultato a un elenco globale per ogni funzione?
Poi ho potuto mettere qualcosa di simile alla fine della mia funzione principale:
...
while True:
time.sleep(30) # or in a try/except with a loop of 1 second sleeps so I can interrupt
for i in range(3):
save_to_disk(data[i])
Pensieri?
Edit: Aggiunta la mia risposta come una possibilità
+1 Funziona perché l'output è per separare i file. Se non era banale e implicava una combinazione di output, dovevi aspettare che tutti gli elementi in coda finissero prima di scrivere. Assicurati di chiamare 'task_done' sugli oggetti che ottieni. – darvids0n
Ottima idea! La coda è thread-safe ed è molto più bella di list.append (dati) –
Ho aggiunto la chiamata a 'task_done' come suggerito da darvids0n. Grazie. – srgerg