Python(可重入锁-线程同步之条件变量-队列-线程通信event-线程合并join-多进程)

来源:互联网 发布:java乱码怎么解决 编辑:程序博客网 时间:2024/05/19 18:18

  • 自己造成的死锁 无法解开
  • 可重入锁
  • 可重入锁的替代方法
  • 线程同步之条件变量
  • 线程同步之队列
  • 线程间通信event
  • 线程的合并join
    • 守护线程
  • threadinglocal
  • 多进程
    • fork创建子进程
    • fork过程
    • 多次fork
    • 进程号
      • 获取进程pid和父进程的pid

自己造成的死锁, 无法解开

这里写图片描述

可重入锁

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

这里写图片描述

可重入锁的替代方法

这里写图片描述

线程同步之条件变量

这里写图片描述
con.wait()只要线程执行到了这个位置线程及堵塞目的是等待con.notify通知继续执行
类似于互斥锁, 可以上锁, 可以解锁
如果有多个wait, 当遇到notify的时候由系统决定首先执行哪一个wait继续执行
这里写图片描述
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

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

这里写图片描述

线程同步之队列

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

线程间通信event

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

这里写图片描述
一秒钟之后
这里写图片描述

线程的合并join

  • join能等待
    这里写图片描述

这里写图片描述
运行结果
在for循环的第一次时, 这是有两个线程到底先执行13行还是27行有系统决定, 所以可能首先打印27行也可能打印13行, 但是确定的是最后打印的两次一定是13行 , 因为sleep了1秒
这里写图片描述

用join来等待子线程执行完成(也可回收子线程的垃圾)
通过join完成的事情是主线程在等待子线程的结束, 如果子线程不结束那么主线程一直在等待
这里写图片描述
这里写图片描述

设置等待时间 , 一般不用
这里写图片描述

守护线程

这里写图片描述

threading.local()

这里写图片描述

这里写图片描述

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

多进程

fork创建子进程

  • 运行的程序叫做进程
    这里写图片描述
    这里写图片描述

这里写图片描述

这里写图片描述

fork过程

  • 运行fork的过程是创建一个子进程, 创建的时候会复制父进程的所有东西
    这里写图片描述

多次fork

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

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

进程号

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

获取进程pid和父进程的pid

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

原创粉丝点击