Python 多线程常用属性和方法

多线程导入模块:

from threading import Thread  或 import threading 
注意:一般使用高级线程模块,threading 而不用 Thread 模块,threading 模块中包含 Thread 类 

Thread模块低级模块,不推荐使用,不支持守护线程(daemon)概念

threading模块高级模块,推荐使用,已对 Thread类 进行封装,支持daemon

Threading 模块属性和方法:

from threading import Thread                #导入Threading 高级模块中的 Thread 类
def foo(arg,v):                             #定义1个执行函数
    print(arg,v)                         
t1=Thread(target=foo,args=('ddd',1,))       #创建1个 Thread 线程实例
t1.start()                                  #执行这个线程

基本属性:

start()            线程准备就绪,等待CPU调度,准备开始执行
getName():获取线程名称
setName('name') : 为线程设置名称
daemon:守护线程(可理解为新建的子线程为后台线程)

如果你设置一个线程为守护线程(当设置t1.setDaemon(True)时),就表示你在说这个线程是不重要的,在进程退出的时候,不用等待这个线程执行玩完后才退出,即前台进程结束后,后台进程也跟着结束了 

  • isDaemon()
  • setDaemon()     
    是否为守护线程 True( 是守护线程,不重要 ) False (不是守护线程)
    用法:t1.setDaemon( True 或False ) 

    默认为False ,等前台(主)线程执行完后才执行,且 放在 t1.start() 前面才有效

守护线程例子:

from threading import Thread                  #导入Threading 高级模块中的 Thread 类
import time

def foo(arg,v):                              #定义1个执行函数,需要执行10秒
    for i in range(10):
        print('守护线程开始执行'+str(i)+'秒')
        time.sleep(1)
print('主线程(前台线程)开始')                   #主线程(前台线程)执行1个动作,打印
t1=Thread(target=foo,args=('ddd',1,))        #实例化1个子线程
t1.setDaemon(True)                           #设置这个子线程为守护线程(后台线程)
t1.start()                                   #子线程开始工作,执行1个10秒的函数
#print(t1.getName())
print('主线程执行中')                           #主线程(前台线程)执行1个动作,打印
print('线程结束')                              #主线程(前台线程)执行1个动作,打印
time.sleep(5)                                #主线程一共执行了5秒

输出结果:

主线程(前台线程)开始
守护线程开始执行0秒
主线程执行中
线程结束
守护线程开始执行1秒
守护线程开始执行2秒
守护线程开始执行3秒
守护线程开始执行4秒
守护线程开始执行5秒

如上图所示,前台进程执行5秒后,就退出了,虽然守护线程(后台线程)需要执行10秒,但5秒后,也跟着主线程一起退出了。

转载于:https://my.oschina.net/esdn/blog/829443

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值