How to make a proper server tick?

前端 未结 1 1922
耶瑟儿~
耶瑟儿~ 2020-11-30 14:52

I am trying to make a game server which updates after a certain period.

import time
last_time = time.time()
tick = 1
time_since_last_update = 0
while True:
          


        
相关标签:
1条回答
  • 2020-11-30 15:17

    Insert a time.sleep(0.01) to wait 10 millis between each time poll otherwise your loop polls time continuously without releasing power to the cpu.

    Edit: That is better, only waits once if needed. Should a huge CPU overload occur, the time to wait could be negative, and in that case 2 actions could be triggered at once. And targeted time is recomputed constantly to avoid float accumulation errors.

    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)
    
    0 讨论(0)
提交回复
热议问题