Joakim Hansen
Joakim Hansen

Reputation: 13

Measuring time since last time the if statement ran (Python)

I want to make my if statement run, only, if it is more than x seconds since it last ran. I just cant find the wey.

Upvotes: 1

Views: 146

Answers (3)

Luke
Luke

Reputation: 119

As you've provided no code, let's stay this is your program:

while True:
    if doSomething:
        print("Did it!")

We can ensure that the if statement will only run if it has been x seconds since it last ran by doing the following:

from time import time

doSomething = 1
x = 1
timeLastDidSomething = time()

while True:
    if doSomething and time() - timeLastDidSomething > x:
        print("Did it!")
        timeLastDidSomething = time()

Hope this helps!

Upvotes: 2

Blake O'Hare
Blake O'Hare

Reputation: 1880

You'll want to use the time() method in the time module.

import time

...
old_time = time.time()
...
while (this is your game loop, presumably):
  ...
  now = time.time()
  if old_time + x <= now:
    old_time = now
    # only runs once every x seconds.
...

Upvotes: 1

IMCoins
IMCoins

Reputation: 3306

# Time in seconds
time_since_last_if = 30
time_if_ended = None
# Your loop
while your_condition:
    # You still havent gone in the if, so we can only relate on our first declaration of time_since_last_if 
    if time_if_ended is not None:
        time_since_last_if = time_if_ended - time.time()
    if your_condition and time_since_last_if >= 30:
        do_something()
        # defining time_if_ended to keep track of the next time we'll have the if available
        time_if_ended = time.time()

Upvotes: 0

Related Questions