Voglio sapere come chiamare una funzione dopo un certo tempo. Ho provato time.sleep() ma questo interrompe l'intero script. Voglio che lo script continui, ma dopo ??? secs chiama una funzione ed eseguo l'altro script allo stesso tempoDelay Time Python
risposta
Dai uno sguardo a threading.Timer
. Esegue la tua funzione in una nuova discussione.
from threading import Timer
def hello():
print "hello, world"
t = Timer(30.0, hello)
t.start() # after 30 seconds, "hello, world" will be printed
Se si desidera che una funzione venga chiamata dopo un po 'e non si interrompa lo script, si tratta in modo inerente del codice thread. Se vuoi impostare una funzione da chiamare e non preoccuparti, devi usare esplicitamente il multithreading come risposta di Mark Byers o usare un framework di codifica che ha un ciclo principale che si occupa della distribuzione delle funzioni per tu - come contorto, qt, gtk, pyglet e tanti altri. Ognuno di questi richiederebbe di riscrivere il codice in modo che funzioni dal ciclo principale di quel framework.
È o quello, o si scrive qualche ciclo principale dall'evento controllandosi sul proprio codice - Tutto sommato, se l'unica cosa che si desidera è una chiamata a funzione singola, threading.Timer è il modo per farlo. Se si desidera utilizzare queste chiamate a tempo per eseguire effettivamente il loop del programma come di solito si fa con setTimeout di javascript, è meglio selezionare uno dei framework di codifica che ho elencato sopra e rielaborare il codice per sfruttarlo.
Questo codice non funziona Threading.Timer (30.0, self.timestart (finestra)) .start() Si chiama self.timestart, dando la finestra arg, ma che sta facendo subito, non dopo 30secs Would Ho chiesto a Mark, ma l'ho infastidito abbastanza, e sai anche tu cosa stai parlando :) – drnessie
import threading
def time_demo():
threading.Timer(5.0, time_demo()).start()
print 'Hello this is time demo function'
time_demo()
Il tuo codice si arresta in modo anomalo perché hai una ricorsione infinita in esso, devi rimuovere le parentesi quando passi in time_demo perché dovrebbe passare in un puntatore a funzione. – cujo
- 1. OnKeyUp JavaScript Time Delay?
- 2. Time to decimal time in Python
- 3. python time (milli secondi)
- 4. JavaFX Canvas delay
- 5. str in time in python
- 6. Parsing time string in Python
- 7. Handler.sendMessageDelayed (msg, delay) non funziona correttamente
- 8. _.delay() - uccisione del timer
- 9. .delay() e .setTimeout()
- 10. Java Delay/Wait
- 11. delay Effetti JQuery
- 12. Jquery delay on fadeout
- 13. setTimeout delay not working
- 14. jQuery delay not working
- 15. JQuery fadeIn Delay FadeOut
- 16. JQuery delay before fadeOut
- 17. Localizzare Epoch Time con pytz in Python
- 18. come inizializzare time() dell'oggetto in python
- 19. Analisi di "time string" con Python?
- 20. sizeof operatore compile-time o run-time
- 21. jQuery: slideUp() delay() quindi slideDown; non funziona
- 22. sendAsynchronousRequest con tableView reloadData delay on draw
- 23. visual studio 2010 intellisense tooltip delay
- 24. R: "InvalidArgument` -delay 'con animazione e ggplot
- 25. jQuery Animation Delay Aggiunta di una classe
- 26. jQuery: append() oggetto, remove() con delay()
- 27. remove key press delay in javascript
- 28. Differenza tra i moduli Python datetime vs time
- 29. Problema durante l'importazione di "time" come modulo in python
- 30. come time-out con grazia durante il download con Python
multithreading ... hmm, suona familiare. Non è che c'erano più di un processo? Beh, comunque, sembra giusto. se uso t.start() più di una volta, continua, mi dà un errore o riavvia il timer? – drnessie
@drnessie: "Non è che c'era più di un processo?" No - è quando hai più di un thread. "se uso t.start() più di una volta, continua, mi dà un errore o riavvia il timer?" - Si ottiene un errore 'RuntimeError: thread già avviato' che è possibile verificare facilmente duplicando l'ultima riga nel codice sorgente sopra riportato e eseguendola. –
Esiste un modo per eliminare l'errore, oltre a fermarsi e riavviare il timer? – drnessie