线程

Day39 线程

什么是线程?如何定义线程?如何使用线程?线程start方法和run方法的区别,什么是线程安全,如何确保线程安全,daemon线程和非daemon线程,线程实例的join方法,timer定时器

08-28侠课岛    基础入门       

后端/后端/Python 由浅入深入门 18     0     211

总结

1.什么是线程

  • 线程,有时被称为轻量进程,是程序执行流的最小单元;

  • 进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础;

2.如何定义线程

  • 在Python中,使用threading库来创建线程;

  • 创建进程的语法:threading.Thread(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None)

  • group:为线程组,但是Python中没有线程组,所以这是保留参数;

  • target:为可调用对象,也就是任务, 可以是函数,如果是实例,那么实例的类必须实现__call__方法;

  • name:指定线程的名称;

  • args、kwargs:给线程任务传递参数、关键字参数;

  • daemon:指定子线程是否需要主线程等待,主线程是non-daemon线程;

3.如何使用线程

  • Python中的线程没有优先级、线程组、停止、挂起、销毁、恢复的概念;

  • 线程退出的方式有两种:线程任务执行完毕或线程内部抛出异常;

  • threading.active_count():依然存活的线程数,包括主线程;

  • threading.current_thread():返回当前线程实例对象;

  • threading.enumerate():返回当前存活的线程对象列表,包括主线程,但是不包括终止线程和未启动线程;

  • threading.main_thread():返回主线程实例对象;

  • threading.get_ident(): 返回当前线程的ID;

  • thread_obj.name:属性装饰器实现,获取线程名称;

  • thread_obj.name = 'thread name': 设置线程名称;

  • thread_obj.ident:线程id;

  • thread_obj.is_alive():显示线程是否存活,返回Bool值;

4.线程start方法和run方法的区别

  • start方法会在内存中,启动一个新的线程运行任务;

  • run方法不会启动新的线程,只是在主线程中执行任务;

5.什么是线程安全

  • 一般在使用多线程的时候,如果需要打印线程的信息,不会使用print函数打印,而是使用logging日志模块打印,因为考虑到print函数在打印过程中 可能出现线程的切换;

6.如何确保线程安

  • 使用logging模块,把线程的信息通过日志的形式打印出来;

7.daemon线程和非daemon线程

  • 线程中有父子的概念,如果在主线程中启动了一个线程,那么主线程就是父线程,启动的这个工作线程就是子线程;

  • 主线程是non-daemon线程,也就是daemon=False, 如果子线程的daemon=False,那么主线程会等待子线程执行完毕,主线程才会终止,如果 为True, 那么主线程将不会等待子线程,而是主线程执行完毕后,子线程就会终止运行;

  • daemon选项必须在启动线程之前设定;

8.线程实例的join方法

  • 在当前线程中调用另一个线程的join方法,当前线程会在此处被阻塞,直到被调用的线程结束运行或终止,timeout指定被阻塞的时长,如果没有指定 ,那么就一直阻塞直到调用线程终止;

9.timer定时器

  • Timer是Thread的一个派生类,用于在指定时间后调用一个方法,如果想实现每隔一段时间就调用一个函数的话,就要在Timer调用的函数中,再次 设置Timer;

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

18

本课评分:
  •     非常好
难易程度:
  •     适中的

内容目录



|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?