The Python main interpreter has an at-exit list of callables, which are called when the interpreter exits. Can threads have one? What's involved, or is the best way merely to subclass Thread?