È possibile pianificare un evento in python senza il multithreading? Sto cercando di ottenere qualcosa come la programmazione di una funzione da eseguire ogni x secondi.Come pianificare un evento in python senza il multithreading?
risposta
Forse sched?
È possibile utilizzare una combinazione di signal.alarm
e un gestore di segnale per SIGALRM
in modo da ripetere la funzione ogni 5 secondi.
import signal
def handler(sig, frame):
print "I am done this time"
signal.alarm(5) #Schedule this to happen again.
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)
L'altra opzione è quella di utilizzare il modulo sched che arriva con Python, ma non so se si utilizza i thread o no.
Sched è probabilmente la strada da percorrere per questo, come sottolinea @eumiro. Tuttavia, se non si vuole farlo, allora si potrebbe fare questo:
import time
while 1:
#call your event
time.sleep(x) #wait for x many seconds before calling the script again
È questo quello che vuoi? Ciò bloccherebbe completamente la tua applicazione per 'x' secondi, impedendogli di fare qualsiasi cosa. –
Senza threading rende raramente senso chiamare periodicamente una funzione. Perché il tuo thread principale è bloccato dall'attesa - semplicemente non fa nulla. Tuttavia, se si vuole veramente fare così:
import time
for x in range(3):
print('Loop start')
time.sleep(2)
print('Calling some function...')
io questa cosa si vuole veramente?
Sono abbastanza sicuro che questo non è quello che voleva. :) –
Potreste usare celery:
Il sedano è un asincrono coda di coda compito/lavoro open source basata su messaggio distribuito passa. È incentrato sul funzionamento in tempo reale, ma supporta anche la pianificazione.
Le unità di esecuzione, denominate attività, sono eseguite contemporaneamente su uno o più nodi di lavoro . Le attività possono eseguire in modo asincrono (in background) o in modo sincrono (attendere che sia pronto).
e un esempio di codice:
Probabilmente vogliono vedere qualche codice da ora, quindi ecco un compito esempio aggiungendo due numeri:
from celery.decorators import task
@task
def add(x, y):
return x + y
È può eseguire l'attività nello sfondo o attendere che termini:
>>> result = add.delay(4, 4)
>>> result.wait() # wait for and return the result 8
Questo è più utile in generale che il problema che si descrive richiede, però.
@Noufal Ibrahim: Grazie per la cattura.Non ho notato che quando ho tagliato e incollato il codice dal sito di sedano, la parte '@ task' non era formattata correttamente. – hughdbrown
Sei il benvenuto Hugh. –
- 1. pianificato un evento ricorrente in Python 3
- 2. Python, Ruby, Haskell - Forniscono un vero multithreading?
- 3. Multithreading per Python Django
- 4. Python: come si fa a fermare il numpy dal multithreading?
- 5. Come pianificare un'attività in Tomcat
- 6. Come gestire le connessioni MySQL con il multithreading Python
- 7. Python, il multithreading troppo lento, multiprocesso
- 8. C# Multithreading - Richiama senza controllo
- 9. Python IDLE compatibile con multithreading?
- 10. Heroku Dyno ... Esecuzione Pianificare le attività senza un operaio
- 11. Come pianificare thread Java
- 12. python, problema COM e multithreading
- 13. Come funziona il multithreading in Android?
- 14. Come pianificare enormi progetti software?
- 15. Come pianificare una query MySQL?
- 16. Come pianificare l'importazione dei dati in Solr
- 17. Come pianificare i backup automatici in teamcity?
- 18. come pianificare il backup in SQL Server 2008?
- 19. Come pianificare una stored procedure?
- 20. Capire il multithreading C#
- 21. Python - Uso di nonces con multithreading
- 22. Il BackgroundWorker fornisce un vero multithreading?
- 23. Trova plug-in cpu-hogging in python multithreading
- 24. Il modo migliore per pianificare un'attività?
- 25. Pianificare il caricamento giornaliero automatico con FileZilla
- 26. ZeroMQ: come ottenere il multithreading C-like
- 27. come chiamare la funzione js senza evento
- 28. Come impostare checkbox.isChecked senza generare evento
- 29. multithreading in C in un mmorpg
- 30. Come posso pianificare una notifica locale per il seguente scenario?
Questo sembra essere esattamente quello che sto cercando, grazie. – relima
Se è esattamente quello che stai cercando, premi il pulsante I-Love-Your-Answer. – hughdbrown