课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中,对线程问题的讨论可以说是非常多了,而今天我们就再来了解一下,线程间通信方法都有哪些。
线程
线程是一种多任务编程的方式,可以使用计算机多核资源。线程又被称为轻量级的进程
线程特征
*线程是计算机核心分配的小单位
*一个进程可以包含多个线程
*线程也是一个运行过程,也要消耗计算机资源。多个线程共享其进程的资源和空间
*线程也拥有自己特有的资源属性,比如指令集,TID等
*线程无论创建还是删除还是运行资源消耗都小于进程
*多个线程之间并行执行,互不干扰
线程属性
t.is_alive() 查看线程状态
t.name 线程名称 默认Thread-1
t.setName() 设置线程名称
threading.currentThread() 获取当前线程对象
自定义线程类
继承Thread类
运行Thread类中的__init__方法以获取父类属性
重写run方法
使用方法
实例化对象
调用start自动化执行run方法
调用join回收线程
线程间通信方法
1.通信方法:线程间使用全局变量进行通信
2.共享资源争夺
共享资源:多个进程或者线程都可以操作的资源称为共享资源。对共享资源的操作代码段称为临界区。
影响:对共享资源的无序操作可能会带来数据的混乱,或者操作错误。此时往往需要同步互斥机制协调操作顺序。
3.同步互斥机制
同步:同步是一种协作关系,为完成操作,多进程或者线程间形成一种协调,按照必要的步骤有序执行操作。
互斥:互斥是一种制约关系,当一个进程或者线程占有资源时会进行加锁处理,此时其他进程线程就无法操作该资源,直到解锁后才能操作。
进程和线程的区别和联系
两者都是多任务编程的方式,都能够使用计算机的多核
进程的创建删除要比线程消耗更多的计算机资源
进程空间独立,数据安全性好,有专门的进程间通信方法
线程使用全局变量通信,更加简单,但是需要同步互斥操作
一个进程可以包含多个线程,线程共享进程的空间资源
进程线程都独立执行,有自己的特有资源如属性,id,命令集等
使用情况:
一个进程中并发任务比较多,比较简单,适合使用多线程
如果数据程序比较复杂,特别是可能多个任务通信比较多的时候,要考虑到使用线程同步互斥的复杂性
多个任务存在明显差异,和功能分离的时候没有必要一定写入到一个进程中
使用python考虑线程GIL问题
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!