Python系统编程(多线程-互斥锁-死锁-thread-threading)

多任务的概念

这里写图片描述

这里写图片描述

Python实现多任务

  • 主线程加sleep是因为主线程如果结束子线程都会结束
    这里写图片描述

这里写图片描述

thread多线程注意点

  • 主线程结束, 子线程也结束
  • 子线程可以调用thread.exit_thread()来结束本线程和主线程

多线程threading

  • threading创建的线程不需要主线程结束之后子线程也可以运行
  • len(threading.enumerate()) 检测有多少个线程
    这里写图片描述

  • 一个线程执行一个函数
    这里写图片描述

  • 多个线程执行同一个函数
    这里写图片描述

  • 后面线程数只有1是因为子线程都运行结束了所以只剩下一个主线程
    这里写图片描述

threading注意点

这里写图片描述
这里写图片描述

  • 用类进行封装
    这里写图片描述

thread和threading的几个问题

这里写图片描述

线程的执行顺序

这里写图片描述

线程总结

这里写图片描述

这里写图片描述

这里写图片描述
这里写图片描述

多线程开发可能遇到的问题

这里写图片描述

线程同步

这里写图片描述

这里写图片描述

互斥锁

这里写图片描述
这里写图片描述
这里写图片描述

互斥锁同步

这里写图片描述
这里写图片描述
这里写图片描述

acquire() 有个参数默认为true表示上锁, 如果设置为false则无法上锁
这里写图片描述
这里写图片描述
运行结果
这里写图片描述
这里写图片描述

acquire(false)
这里写图片描述
这里写图片描述

上锁和解锁过程

这里写图片描述

互斥锁的好处和坏处

这里写图片描述

非共享数据不需要同步

只要是全局变量则线程是共享数据的
如果是函数内部变量那么各个线程的数据是互相独立的
这里写图片描述
运行结果
这里写图片描述

  • 多线程对函数内局部变量的影响
    这里写图片描述
    第二行在第一行打印5秒钟之后才打印
    这里写图片描述

死锁

这里写图片描述
这里写图片描述

光标一直在闪动, 卡主
这里写图片描述

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值