I think (like above) it's possible to leak threads here if start is called twice before the first thread actually shuts down (which is all the more likely because `stop` doesn't guarantee that the thread shuts down.  I think the safer pattern is to create the thread objects in the constructor, and only call start on them here, then Python will protect from foot-shooting.