最简单的多线程并发与守护线程与join的运用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最简单的多线程并发与守护线程与join的运用相关的知识,希望对你有一定的参考价值。
import threading
import time
def run(n):
print("talk",n)
time.sleep(3)
#run("t1")
#run("t2")
t1=threading.Thread(target=run,args=("t1",))
t2=threading.Thread(target=run,args=("t2",))
#t1.start()
#t2.start()
##类的多线程方式
class MyThread(threading.Thread):
def __init__(self,n,sleep):
super(MyThread,self).__init__()
self.n=n
self.sleep=sleep
def run(self):
print("talk me all you know",self.n)
time.sleep(self.sleep)
print("so esay %s",self.n)
#t1=MyThread("t1",2)
#t2=MyThread("t2",4)
#t1.start()
#t2.start()
#t1.join()
#t2.join() #等待t2的结果(这一步后直接计算时间得到的就是2个线程执行完所花的时间)
#print("主要程序执行完毕")
##计算所有线程花费的时间,守护线程(非守护线程一结束程序就结束),看是否是主线程,活跃的线程数量
def run(n):
print("task",n)
time.sleep(2)
stat_time=time.time()
loot=[] #创建一个空列表(存线程实例)
for i in range (50):
t=threading.Thread(target=run,args=("t-%s"%i,))
t.setDaemon(True)#把当前线程设置为守护线程
t.start()
loot.append(t) #为了不阻塞后面的线程启动,不在这里join,先放到一个列表里
#for t in loot:#循环线程实例列表,等待所有线程执行完毕
#t.join() #等待一个线程全部执行完再执行其他线程(把并程改成了串行)
print("-----ddddd-----",threading.current_thread(),threading.active_count())#看是否是主线程,活跃的线程数量
print("cost:",time.time()-stat_time)
以上是关于最简单的多线程并发与守护线程与join的运用的主要内容,如果未能解决你的问题,请参考以下文章
Java 并发编程 -- 并发编程线程基础(线程创建与运行线程通知与等待join / sleep / yield方法线程中断线程上下文切换死锁守护线程与用户线程ThreadLocal)