python timing

python - ¿Cómo hacer que un servidor funcione correctamente?



timing (1)

Estoy tratando de hacer un servidor de juegos que se actualice después de un cierto período.

import time last_time = time.time() tick = 1 time_since_last_update = 0 while True: new_time = time.time() dt = new_time - last_time time_since_last_update += dt last_time = new_time if time_since_last_update > tick: print("Magic happens") time_since_last_update = 0

Cuando hago esto, Python consume el 100% de potencia informática en uno de los núcleos. Realmente no entiendo por qué está sucediendo esto y cómo solucionarlo si es posible.


Inserte un time.sleep(0.01) para esperar 10 milis entre cada sondeo de tiempo; de lo contrario, su ciclo sondea el tiempo continuamente sin liberar energía a la CPU.

Editar: Eso es mejor, solo espera una vez si es necesario. Si se produce una sobrecarga de la CPU, el tiempo de espera podría ser negativo y, en ese caso, se podrían activar 2 acciones a la vez. Y el tiempo objetivo se recalcula constantemente para evitar errores de acumulación de flotación.

import time start_time = time.time() tick = 1.0 # 1 second tick_count = 0 while True: new_time = time.time() tick_count += 1 targeted_time = start_time + tick*tick_count time_to_wait = targeted_time - new_time if time_to_wait>0: time.sleep(time_to_wait) print("Magic happens,waited %f seconds" % time_to_wait)