Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rate Limit an Infinite While Loop in Python

If I have a infinite while loop, how can I have the loop run the next iteration every 10 minutes from the start of the loop iteration?

If the first iteration starts at 1:00am and finishes at 1:09am, the next iteration should run at 1:10am instead of waiting for another 10 minutes (like in the code snippet below). If the loop iteration took more than 10 minutes to run, the next iteration should run immediately and start the countdown of the next 10 minutes.

while(True):

    someLongProcess() # takes 5-15 minutes
    time.sleep(10*60)

Example

Loop 1: Starts 1:00am, ends 1:09am
Loop 2: Start 1:10am, ends 1:25am    # ends 5 minutes later

Loop 3: Starts 1:25am, ends 1:30am    # ends 5 minutes earlier
Loop 4: Starts 1:35am, ends 1:45am
like image 987
Nyxynyx Avatar asked Feb 20 '14 03:02

Nyxynyx


People also ask

How do I limit a while loop in Python?

You can keep a counter of guesses , e.g. guesses = 0 . Then, at the end of your while_loop, guesses += 1 . Your condition can be while guesses < 3 for example, to limit it to 3 guesses. And then, instead of keeping track of found , just break out when user_guess == random_number .

How do you make an infinite while loop in Python?

Infinite While Loop in Python a = 1 while a==1: b = input(“what's your name?”) print(“Hi”, b, “, Welcome to Intellipaat!”) If we run the above code block, it will execute an infinite loop that will ask for our names again and again. The loop won't break until we press 'Ctrl+C'.

How do you check for infinite loops in Python?

If the Python program outputs data, but you never see that output, that's a good indicator you have an infinite loop. You can test all your functions in the repl, and the function that does "not come back" [to the command prompt] is a likely suspect.

What does infinite loop mean in Python?

An Infinite Loop in Python is a continuous repetitive conditional loop that gets executed until an external factor interferes in the execution flow, like insufficient CPU memory, a failed feature/ error code that stopped the execution, or a new feature in the other legacy systems that needs code integration.


1 Answers

Remember the start time, calculate sleep time using that.

while True:
    start = time.time()
    some_long_process()
    end = time.time()
    remain = start + 10*60 - end
    if remain > 0:
        time.sleep(remain)
like image 94
falsetru Avatar answered Sep 24 '22 16:09

falsetru