I'm having a hard hard time with Timer
function from threading.
Basically, when my program starts, I want to log stats every x second.
So I thought I could do it with the Timer
function (launch function every 5 second).
For now, I did :
from threading import Timer
def startLogger():
while True:
t = Timer(5, function)
t.start()
def function():
print("hey")
But it launch error, so I think it's not the good way to do it.
RuntimeError: can't start new thread
If someone can give me a clue, it would be appreciated!
Instead of starting a new thread every five seconds, you can create just one thread and run all your code from there.
startLogger
will continually run. It'll callfunction
, then pause for 5 seconds, then start again, callingfunction
and so on.It goes in its own thread so that the
sleep(5)
doesn't also stop your main thread for 5 seconds.You can try the following. The idea is, that you are scheduling the next function call just at the end of this function's body: