threading

守护线程:

thread不支持守护线程,当主线程退出时,所有的子线呈不论他们是否还在工作,都会被强行退出,  有时我们并不期望这种行为,这时候就引入了守护线程的概念,

Threading模块支持守护线程,工作原理:

守护线程一般是一个等待客户请求服务器,如果没有客户提出请求,他就在那里等待,如果你设定一个线程为守护线程,就表示这个线程是不重要的,在进程退出时候,不用等待这个线程退出,如:服务器线程运行在一个无限循环中,一般不会退出。

如果你的主线程要退出的时候,不用等待那些自想成完成,那就省定这些线程的daemon属性,即,在线程开始(调用thread.start()之前,调用setDaemon()函数设定线程的daemon标志(thread.setDeamon(True)))这就表示这个线程不重要。

如果你想要等待子线呈完成在退出,那就什么都不用做,或者显示地调用thread.setDeamon(False)以保证其daemon标志为False,你可以调用thread.isDaemon(0函数来判断其daemon标志的值,新的子线呈会集成其父线程的daemon标志,整个Python会在所有的非守护线程退出后才会结束,即进程中没有非守护进程存在的时候才结束。

 

posted on 2012-11-15 19:33  wangbokun  阅读(318)  评论(0编辑  收藏  举报

导航