并发主干内容回顾

并发主干内容回顾,第1张

概述并发主干内容回顾 进程: 一个程序运行起来,资源集合. 开启进程的过程: *** 作系统开辟一个内存空间, 把代码放进去, 去运行代码(需要cpu). ps:(如果是python的话会把解释器代码也放进去) 特点: 进程的内存空间彼此隔离 主进程要等待所有的子进程结束(原因是:回收僵尸进程) multiprocessing重要用法: join() 等待子进程结束 站在当前进程查看pid 查看父进程的pi 并发主干内容回顾 进程:

一个程序运行起来,资源集合.

开启进程的过程:

*** 作系统开辟一个内存空间,把代码放进去,去运行代码(需要cpu).

ps:(如果是python的话会把解释器代码也放进去)

特点: 进程的内存空间彼此隔离 主进程要等待所有的子进程结束(原因是:回收僵尸进程) multiprocessing重要用法: join() 等待子进程结束 站在当前进程查看pID 查看父进程的pID : os.getppID() 查看当前进程的pID: os.getpID() 查看子进程的pID: 子进程对象.pID() 守护进程:首先是一个进程,守护到主进程最后一行代码结束. 进程的互斥锁,一个进程acquire到了在不release的情况下,其他进程无法acquire 比串行好在了是部分代码实现串行 主要用在多个进程修改数据混乱的场景 生产者消费者模型(一种思想)

生产者只负责生产,消费者只负责消费,彼此都达到了自己最大的效率.

生产者-->队列(盆)--->消费者

线程

cpu真正的执行单位是线程

python里使用的线程是 *** 作系统的原生线程.

在传统 *** 作系统中,每个进程有一个地址空间,而且默认就有一个控制线程,cpu真正的执行单位是线程.

线程和进程的关系

进程相当于线程的容器

进程 = 各种资源+线程

产生一个线程的过程:

每开启一个进程就会自带一个线程,也可以通过代码调用 *** 作系统开启线程,代码执行完了线程结束了.

论述进程和线程 进程的周期其实是资源的申请和销毁 资源角度 线程的周期其实是代码的运行和结束 执行角度 线程的创建速度要快于进程 进程和线程的创建速度开启子进程需要申请资源开辟空间 慢 开启子线程只是告诉 *** 作系统一个执行方案 快 线程共享一个进程的内存资源,进程彼此内存资源隔离 threading 的重要用法: 子线程.join() : 等待子线程运行结束. 守护线程(了解): 首先是一个线程,守护的的是主进程的完整周期. 线程锁(互斥锁) 死锁问题: 互相都拿到了彼此想要往下执行的必需条件,互相都不放手里的锁头. python的多进程vs多线程

大前提要知道:python的多线程无法利用多核优势实现并行,只能实现并发.

io密集型 适合用python的多线程处理.

计算密集型 适合用python的多进程处理.

进程池线程池:

池的功能限制进程数或线程数.

? 什么时候限制?

当并发的任务数量远远大于计算机所能承受的范围,即无法一次性开启过多的任务数量,我就应该考虑去限制我进程数或线程数,从保证服务器不崩.

协程: 单线程下实现并发

什么样的协程才有意义?

只有遇到io切换才有意义.

优点:

应用程序控制切换要比 *** 作系统控制切换快的多

缺点:

协程跟多线程比

如果一个任务io了没有切换,其他的任务都要等这个任务io结束

协程跟多进程比

无法利用多核优势.

为什么要有协程( 遇到io切换的协程) ?

协程概念本质是程序员抽象出来的, *** 作系统根本不知道协程存在,也就说来了一个线程我自己遇到io,自己会在内部切换任务, *** 作系统跟本发现不了我发生了io,也就是实现了单线程下效率最高.

真实的情况是 多进程下开多线程,多线程下开协程(程序员自己控制的)

总结

以上是内存溢出为你收集整理的并发主干内容回顾全部内容,希望文章能够帮你解决并发主干内容回顾所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1191284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存