栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

CSDN21天学习挑战第六篇

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CSDN21天学习挑战第六篇


活动地址:CSDN21天学习挑战赛

1. 多线程简单介绍

多线程,或者说多任务,指的是操作系统同时运行多个任务。例如,听歌、洗衣服、看视频可以同时进行,这种就是多任务。

单核CPU执行多任务:操作系统轮流让各个任务交替执行,任务1执行t1时间,切换到任务2,任务2执行t2时间,再切换到任务3,执行t3时间…如此反复执行,表面上看,每个任务交替执行,但是由于CPU的执行速度很快,在人看来就好像所有任务同时执行。

这里需要注意并发和并行的概念:

  • 并发,指任务数多于COU核数,通过操作系统的各种任务调度算法,实现用多个任务一起执行(实际上有一些任务没有在执行,但因为切换任务的速度相当快,看上去一起执行)。
    并行,指的是任务数小于或等于CPU核数,任务是同时执行的。
threading模块介绍

python中提供了thread和threading模块对线程进行操作,其中thread模块是比较底层的模块,threading模块对thread做了一些包装,使用更方便。

2.1 threading模块常用方法

threading.active_count() 返回当前处于active状态的Thread对象的个数
threading.current_thread() 返回当前Thread对象
threading.get_ident() 返回当前线程的线程标识
threading.enumerate() 返回当前处于active状态的所有Thread对象列表
threading.main_thread() 返回主线程对象,启动python解释器的线程对象
threading.stack_size() 返回创建线程时使用的栈的大小,如果指定 size参数,则用来指定后续创建的线程使用的 栈大小,size必须是0(标识使用系统默认值) 或大于32K的正整数

注:线程标识是一个非负整数,并无特殊含义,只是用来标识线程,该整数可能会被循环利用,python3.3及以后版本支持该方法。

threading模块提供了Thread、Lock、RLock、Condition、Event、Timer和Semaphore等类支持多线程。

2.2 Thread类使用

Thread是threading提供的最重要也是最基本的类,可以通过该类创建线程并控制线程的运行。

使用Thread创建线程,有两种方式:

  1. 为构造函数传递一个可调用对象
  2. 继承Thread类并在子类中重写__init__()和run()

threading.Thread类常用的方法和属性如下

  • 常用方法
    方法名 说明
方法名说明
start()启动线程
run()线程代码,用来实现线程的功能和业务逻辑,可以在子类中重写该方法自定义线程的行为
init(self,group=None,target=None,name=None,args=(),kwargs=None,daemon=None)构造函数
is_alive()判断线程是否存货
getName()返回线程名
setName()设置线程名
isDaemon()判断线程是否为守护线程
setDaemon()设置线程是否为守护线程

常用属性

属性名说明
name读取或设置线程的名字
ident线程标识,用非0数字或None(线程未被启动)
daemon标识线程是否为守护线程,默认为False
join(timeout=None)当timeout=None时,会等待至线程结束;否则,会等待至timeout时间结束,单位为秒

未完续待…

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1040850.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号