thread不支持守护线程,当主线程退出时,所有的子线程无条件推出;针对这种情况,threading引入了守护线程的概念。

    如果主线程要退出的时候,不用等待子线程完成,那就在线程开始之前,即调用start()之前,调用setDaemon(True),表示这个线程不重要;相反的,如果要等待子线程完成再退出,那就什么都不做或者显示调用setDaemon(False)。新的子线程会继承父线程的daemon。

    join()会等到线程结束,或者再给了timeout参数的时候,等到超时为止。一旦线程启动后,就会一直运行,直到线程函数退出。如果主线程除了等线程结束外还有其他的事情做,就不需要调用join(),只有在你要等待线程结束的时候才要调用join()。