最简单的多线程并发与守护线程与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)

转载于:https://blog.51cto.com/12992048/2307606

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值