How do you clear all timers in bpy.app.timers
? It seems like there is no straightforward way, if not impossible, to clear timers that have run from previous script execution. It is easy to do for bpy.app.handlers
, you just call the clear()
function of the handler.
import bpy
bpy.app.handlers.frame_change_post.clear() # easy clear everything from previous execution as well
bpy.app.timers.clear() # but this does not exist
def some_handler(scene, depsgraph):
print("some_handler", scene, depsgraph)
def some_timer():
print("some_timer")
return 2.0
bpy.app.handlers.frame_change_post.append(some_handler)
bpy.app.timers.register(some_timer)
And of course you can't clear a previous some_timer
function using bpy.app.timers.unregister(some_timer)
from a previous execution because that function will have another pointer address <function some_timer at 0x00000000XXXXXXXX>
Current workaround is to close the file and re-open the file or open a new one. Is there any fix or any other workaround for this so I don't have to close the file?
bpy.__some_timer
and retrieve it later run of the script? $\endgroup$