python中threading的setDaemon、join的用法
python 中的thread的一些机制:python 主线程结束后,会默认等待子线程结束后,主线程才退出。
#coding=utf-8 import threading from time import ctime,sleep def music(func): for i in range(2): print "I was listening to %s. %s" %(func,ctime()) sleep(1) def move(func): for i in range(2): print "I was at the %s ! %s" %(func,ctime()) sleep(5) threads = [] t1 = threading.Thread(target=music,args=(u'爱情买卖',)) threads.append(t1) t2 = threading.Thread(target=move,args=(u'阿凡达',)) threads.append(t2) if __name__ == '__main__': for t in threads: #t.setDaemon(True) t.start() #t.join() print "all over %s" %ctime()
运行结果如下: setDaemon: 主线程A启动了子线程B,调用b.setDaemaon(True),则主线程结束时,会把子线程B也杀死。
if __name__ == '__main__': for t in threads: t.setDaemon(True) t.start() #t.join() print "all over %s" %ctime()
运行结果: 如果想让子线程运行完毕,那么添加join方法
if __name__ == '__main__': for t in threads: t.setDaemon(True) t.start() t.join() print "all over %s" %ctime()
输出如下: |
本文作者为Mr.Bai,转载请注明。