Ho una funzione che esegue una spunta() per tutti i giocatori e gli oggetti all'interno del mio server di gioco. Lo faccio collegando un set ogni .1 secondi. Ho bisogno che sia solido .1. Un sacco di tempismo e matematica dipende da questa pausa, che è il più esatta possibile fino a 0,1 secondi. Per raggiungere questo obiettivo, ho aggiunto questo al thread tick:Python - time.sleep() offset per la durata del codice
start_time = time.time()
# loops and code and stuff for tick thread in here...
time_lapsed = time.time() - start_time # get the time it took to run the above code
if 0.1 - time_lapsed > 0:
time.sleep(0.1 - time_lapsed)
else:
print "Server is overloaded!"
# server lag is greater that .1, so don't sleep, and just eat it on this run.
# the goal is to never see this.
La mia domanda è, è questo il modo migliore per farlo? Se la durata del mio ciclo è 0,01, allora time_lapsed == 0,01 ... e quindi il sonno dovrebbe essere solo per 0,09. Chiedo, perché non sembra funzionare. Ho iniziato a ricevere il messaggio del server sovraccarico l'altro giorno e il server non è stato sicuramente sovraccaricato. Qualche idea su un buon modo per controllare "dinamicamente" il sonno? Forse c'è un modo diverso di eseguire il codice ogni decimo di secondo senza dormire?
Vorrei fare un 'try: time.sleep (0,1 - trascorso); tranne: pass' solo per ridurre il tempo di calcolo con l'istruzione if. Ma tutto il resto sembra buono – inspectorG4dget
Sembra abbastanza chiaro che per qualche motivo i tuoi "cicli e codice e roba per tick thread" impiegano più di 100ms. Come sei sicuro che il server sia "decisamente non sovraccaricato"? – bdares
Quale sistema operativo stai usando? È importante scegliere la migliore funzione –