守护线程
Posted 丫丫625202
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了守护线程相关的知识,希望对你有一定的参考价值。
1、主线程结束代表进程结束,即代表进程生命周期,那么主线程该什么时候结束?守护线程随主线程,主线程随非守护线程
主线程结束,守护线程结束。
from threading import Thread import time def sayhi(name): time.sleep(2) print("%s sat hello" % name) if __name__=="__main__": t=Thread(target=sayhi,args=(\'Ya\',)) t.setDaemon(True) # t.daemon=True t.start() print("\'主\'线程") print(t.isAlive())
其他非守护线程结束,主线程才结束。
from threading import Thread import time def foo(): print(123) time.sleep(1) print("end123") def bar(): print(456) time.sleep(3) print("end456") if __name__ == "__main__": t1=Thread(target=foo) t2=Thread(target=bar) t1.daemon=True t1.start() t2.start() print("---main---")
2、互斥锁,将并行改为串行,牺牲效率,保证数据安全
多线程公用一个进程数据,所以无需像多进程那样穿入mutex对象
from threading import Thread,Lock n=100 import time def task(): global n mutex.acquire() temp=n time.sleep(0.1) n=temp-1 mutex.release() if __name__=="__main__": t_l=[] mutex=Lock() for i in range(100): t=Thread(target=task) t_l.append(t) t.start() for t in t_l: t.join() print("主线程:",n)
以上是关于守护线程的主要内容,如果未能解决你的问题,请参考以下文章