您的位置:首页 > 编程语言 > Python开发

Python 多线程常用属性和方法

2017-01-22 00:00 316 查看
摘要: threading

多线程导入模块:

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秒后,也跟着主线程一起退出了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python Threading