From the docs: http://docs.python.org/2/library/thread
When the main thread exits, it is system defined whether the other threads survive. On SGI IRIX using the native thread implementation, they survive. On most other systems, they are killed without executing try ... finally clauses or executing object destructors.
And here, in the docs (http://docs.python.org/2/library/threading) it says:
A thread can be flagged as a “daemon thread”. The significance of this flag is that the entire Python program exits when only daemon threads are left. The initial value is inherited from the creating thread.
Let's talk only about non-daemon threads here. Since, the first quote does not make any special reference to non-daemon threads, I would assume that even non-daemon threads should be killed if the main thread is exiting. However, the second quote suggests otherwise. And in fact, the non-daemon threads are indeed not killed when the main thread exits. So, what's the point of first quote here?
thread
module handles everything as daemon threads, whilethreading
adds the concept of "non daemon" threads. – Joachim Isaksson