I’m wanting to call a function after a set time, but continue to run the python program. Is this possible?
Example use case:
With the following code, I want to call the function happy_birthday after 2 days but continually print Not your birthday until then.
def happy_birthday():
print("Happy Birthday")
exit()
[MISSING CODE THAT CALLS happy_birthday]
while True:
print("Not your birthday!")
Advertisement
Answer
Your are looking for threading.Timer.
This calls after a specific time a method as thread.
I assume you want to exit the program with exit() in happy_birthday? You can do this by setting the condition (the variable run) to False.
import threading
import time
run = True
def happy_birthday():
print("Happy Birthday")
global run
run = False
t = threading.Timer(60 * 60 * 24 * 2, happy_birthday)
t.start() # after 2 day, happy_birthday will be called
while run:
print("Not your birthday!")
time.sleep(.1)
Output
Not your birthday! Not your birthday! ... Not your birthday! Happy Birthday