进程概念总结

进程:

  是操作系统的发展过程中,为了提高cpu的利用率,在操作系统同时运行多个程序的时候,为了数据的安全代码不混乱而被创造出来的一个概念

  每一个程序运行起来都至少是一个进程

  进程是计算机中最小的资源分配单位

  进程被操作系统调度的,有很多相关的算法----早期的操作系统

  进程之间是数据隔离的

  进程的三状态  就绪 运行 阻塞

同步异步

  同步:

    一个任务执行依赖另一个事物的结束

    #列子  join   lock

  异步:

    一个任务的执行不依赖另一个事物的结束

     #列子  start   terminate

阻塞非阻塞:

  阻塞: accept  recv  recvfrom queue.get join4

  非阻塞:setblocking = False

  异步非阻塞最好

并行:

  并行是特殊的并发

  并行就是同一时刻两个以上的程序同时在cpu上执行

并发

  并发就是,同一时段两个以上的程序看起来在同时执行

IO概念: 文件操作 数据库操作 网络传输,用户输入输出

  input:得到的是bytes/str就是input

  Output:发送数据/输出数据

因为进程与进程之间本质上是异步且数据隔离

守护进程:

  守护进程是一个子进程

  守护进程会在主进程代码结束之后才结束
为什么会这样?
   由于主进程必须要回收所有的子进程的资源
  所以主进程必须在子进程结束之后才能结束
  而守护进程就是为了守护主进程存在的
  不能守护到主进程结束,就只能退而求其次,守护到代码结束了
    守护到主进程的代码结束,意味着如果有其他子进程没有结束,守护进程无法继续守护
解决方案 : 在主进程中加入对其他子进程的join操作,来保证守护进程可以守护所有主进程和子进程的执行
如何设置守护进程
子进程对象.daemon = True 这句话写在start之前

同步控制:

  join

  锁-互斥锁: 多个进程同时对一个数进行操作的时候,操作同一个文件/数据库/管道

  信号量

  事件

数据共享----数据不安全

  manager

IPC----进程之间的通信

  管道

  队列---生产者消费者模型(为了解决数据的生产和处理的效率问题)

  第三方工具(消息队列,消费中间件)

进程池

  解决大量任务开启多个进程的开销过大的问题

  节省资源,提高并发效率的

  一般开数据

原文地址:https://www.cnblogs.com/liurenli/p/10100566.html