There’s been many times when I wanted to latch a command onto a timer that runs independently of the main thread – still allowing control and interaction with maya while the timer is ticking.
The best example of this is an auto scene backup script. Most, if not all, auto scene backup scripts out there latch onto some arbitrary events in the scriptJob command and execute the backup time check when these are triggered (selection change, tool change etc).
This typically does the job but can lead to some funny behavior depending on the events you’ve attached the backup to.
How could it be better?
In any other programming language that supports threads or even attaching timers to UI elements (ala maxScript) this would be very simple and is also simple enough problem inside a maya plugin – spawn a new thread, wait the given time then execute the command.
However I figured with Python’s implementation into Maya and it’s native ability for threading I should be able to achieve this without having to develop or distribute a compiled plugin.
It turns out it’s very simple.