美文网首页PYTHON
python高级-线程

python高级-线程

作者: LoseDemon | 来源:发表于2018-07-11 21:28 被阅读19次

线程
什么是线程:
线程,有时被称为轻量进程(Lightweight
Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
python如何实现多线程:threading
实现一个多线程:导入threading模块中的Thread类
构造一个Tread类的对象
对象.start()启动线程

线程类的实现:
1、继承threading.Thread
2、重写overrid run方法
3、实例化当前类的对象,调用start()
GIL Global Interpreter Lock+

多线程中的全局变量共享问题
多线程并发操作全局变量问题
非线程安全问题
并发导致非线程安全问题

互斥锁:mutex
互斥锁是一个二元变量,其状态为开锁(允许0)和上锁(禁止1),将某个共享资源与某个特定互斥锁在逻辑上绑定(要申请该资源必须先获取锁)。
(1)访问公共资源前,必须申请该互斥锁,若处于开锁状态,则申请到锁对象,并立即占有该锁,以防止其他线程访问该资源;如果该互斥锁处于锁定状态,则阻塞当前线程。
(2)只有锁定该互斥锁的进程才能释放该互斥锁,其他线程试图释放无效。

同步:
在两个或多个数据库、文件、模块、线程之间用来保持数据内容一致性的机制。
线程同步解决的是在一个程序中多个线程之间的关系的协调,对竞争资源的访问的一种处理方式,避免一个线程长期占用一个资源的目的。有synchronized,lock ,volatile,消息传递机制等处理方式达到线程同步。比如在java中使用synchronized关键字修饰一个方法,用这个关键字修饰的方法称为“同步方法”,语法:访问控制符 +synchronized + 返回值类型(参数列表) +方法体;具有这个关键字的方法有一个重要的特性,就是该方法每次只能有一个线程执行这个方法;后来的线程处于挂起状态,直到前面的调用该方法的线程退出该方法,才能调用调用该方法体执行。
死锁:
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
消费者和生产者模型:
产生数据的模块称为生产者,处理数据的模块称为消费者,生产者和消费者之间的中介就叫做缓冲区。生产者(供货商)产生的数据不得不交给另一模块(消费者)来对其进行处理,在这之间必须要有一个类似与超市的东西来存储数据,这就是抽象的生产者/消费者模型。


消费者和生产者模型.png

相关文章

  • python高级-线程

    线程什么是线程:线程,有时被称为轻量进程(LightweightProcess,LWP),是程序执行流的最小单元。...

  • 关于Python GIL

    线程 Python线程并不是某种特有的高级抽象,而是基于操作系统线程的封装,比如在Linux上就是pthreads...

  • python 线程

    python 的线程创建使用threading这个高级模块。启动一个线程就是把一个函数传入并创建Thread实例,...

  • 大师兄的Python学习笔记(十一): 时间模块time,dat

    大师兄的Python学习笔记(十): 多进程和多线程大师兄的Python学习笔记(十二): 常用高级函数 一、基础...

  • Python高级用法

    前言 本篇文章主要介绍了python的一些高级用法:时间和日期、列表推导式、Python高阶函数、多线程。 时间和...

  • 43. 多线程

    由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并且,Pytho...

  • Python - 进程、线程与协程

    Python - 高级教程 - 进程、线程与协程 进程与线程 在操作系统中,每一个独立运行的程序,都占有 操作系统...

  • python多线程和锁

    python中,有两个标准模块thread和threading可以实现多线程,不过threading更加高级,推荐...

  • 【python】多线程(高级篇)

    多线程互斥锁 关于如何使用Lock( 锁 ) 【目标】学习如何加锁,获取钥匙,释放锁. 语句如下: 【注释】loc...

  • 2018-04-02

    python高级 多线程通讯 队列 Queue---来完成多进程间的数据传递 管道 Pipe---方式单...

网友评论

    本文标题:python高级-线程

    本文链接:https://www.haomeiwen.com/subject/hmykpftx.html