同步

1.概念 :同步就是协同步调,按预定的先后次序运行

互斥锁

当多个线程几乎同时修改某一共享数据的时候,需要运行同步控制,最简单的同步机制是引入互斥锁。
某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定",其他线程不能更改;直到该线程释放资源,将资源的状态变成“非锁定",其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。

mutex = threading.Lock()  #创建锁,默认未上锁    也可以有多个锁

mutex.acquire()                  #锁定,如果之前没有上过锁,那么此时上锁成功,如果之前已经上过锁,堵塞,等待这个锁被解开,然后上锁

mutex.release()                #释放

问题1: 被锁的语句越少,越好。但是如果没检查好,中间的过程可能会出错,但最终结果不会出错

问题2: 如果有多个锁,可能会出现死锁现象。   就像两个吵架的朋友,都在等对方先道歉,结果~~~~(导致程序未响应)
    解决方法:1.程序设计时尽量避免(银行家算法(https://www.bilibili.com/video/av56898207?p=10)7:00)

         2.添加超时时间 等

Python 多任务(线程) day2 (2)的更多相关文章

  1. Python 多任务(线程) day2 (1)

    结论:多线程全局变量是共享的 (03) 因为多线程一般是配合使用,如果不共享,那么就要等到一个线程执行完,再把变量传递给另一个线程,就变成单线程了 但是如果多个线程同时需要修改一个全局变量,就会出现资 ...

  2. Python 多任务(线程) day1

    多任务就是可以让一台电脑同时执行多个命令. 以前的单核cpu是怎么做到同时执行多个命令的?(时间片轮转) ——其实以前的单核CPU是让操作系统交替执行命令,每个任务执行0.01秒,这样看起来就像是在同 ...

  3. python多任务-线程

    目录 多任务的概念 线程基础 单线程执行 多线程执行 主线程会等待所有子线程结束后才结束 查看线程数量 线程-注意点 线程执行代码的封装 线程的执行顺序 总结 多任务的概念 什么叫"多任务& ...

  4. Python多任务—线程

    并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已) 并行:指的是任务数小于等于cp ...

  5. Python(线程进程3)

    四 协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切 ...

  6. Python之线程、进程和协程

    python之线程.进程和协程 目录: 引言 一.线程 1.1 普通的多线程 1.2 自定义线程类 1.3 线程锁 1.3.1 未使用锁 1.3.2 普通锁Lock和RLock 1.3.3 信号量(S ...

  7. Python基础篇-day2

    主要内容: for循环 while循环 格式化输出(2) 数据统计及记录 ############################################################# 1 ...

  8. python/进程线程的总结

    python/进程线程的总结 一.进程和线程的描述: 进程:最小的资源管理单位 线程:最小的执行单位 执行一个进程时就默认执行一个线程(主线程) 进程和线程的工作方式: 串行: 假如共有A.B.C任务 ...

  9. 在python中单线程,多线程,多进程对CPU的利用率实测以及GIL原理分析

    首先关于在python中单线程,多线程,多进程对cpu的利用率实测如下: 单线程,多线程,多进程测试代码使用死循环. 1)单线程: 2)多线程: 3)多进程: 查看cpu使用效率: 开始观察分别执行时 ...

  10. python中线程和进程(一)

    目录 进程和线程 Python中的线程 1. Thread类 2. 线程的启动 3. 线程的传参 4. 线程的属性和方法 5. daemon线程和non-daemon线程 6. join方法 7. 定 ...

随机推荐

  1. jQuery Moblie 问题汇总

    1  使用jQuery动态添加html,没有jQuery Moblie的样式 $("body").html(listview);//以上代码只是把结构加上去了,但是却没有加上jqm ...

  2. 知乎-如何rebuttal

    作者:魏秀参链接:https://zhuanlan.zhihu.com/p/104298923来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 学术论文是发布自己或团队最 ...

  3. Log4net实用说明

    Log4net实用说明 Appender Filter Layout Logger ObjectRender Repository PatterLayout格式化字符表 配置文件说明 Appender ...

  4. LeetCode Two Sum&Two Sum II - Input array is sorted&3Sum&4Sum 一锅煮题解

    文章目录 Two Sum Two Sum II 3Sum 4Sum Two Sum 题意 给定一个数组,和指定一个目标和.从数组中选择两个数满足和为目标和.保证有且只有一个解.每个元素只可以用一次. ...

  5. SpringBoot之spring.factories

    组件提供者如何编写出仅需系统开发者进行包引入就可以对spring进行bean注入等操作?   其实在spring库中有提供自动化配置的库spring-boot-autoconfigure,我们只需要引 ...

  6. 软件工程概论,java web项目

    需要网站系统开发需要掌握的技术: 实施Java的WEB项目需要掌握的技术如:面向对象分析设计思想,设计模式和框架结构,XML语言,网页脚本语言,数据库,应用服务器,集成开发环境Java语言是完全面向对 ...

  7. 2019ICPC南昌站E.Bob's Problem

    题意: 一张图,n个点,m条边分为黑边和白边,黑边任意选,白边只能选k条,在保持整张图连通的情况下使得所选变的权值和最大 解析: 因为边权全部是正值,所以可以把黑边全选上,缩点之后对各个连通块和白边进 ...

  8. 异常处理_python

    一.异常处理格式: name=[1,2]data={}try: name[3] data['name']except (KeyError,IndexError) as e : #捕捉指定的几个错误类型 ...

  9. Sulley安装手记

    Sulley折腾手记 序言:sulley是有名的模糊测试架构,可是他的安装十分繁琐,容易出错,以致这么好的工具不被太多人关注,本人大一小白一枚,想入坑sulley,可是网上资料太少,且不连贯,费了九牛 ...

  10. SpringMVC流程图示