当前位置: 首页 > news >正文

网站框架怎么做的上海优化外包公司排名

网站框架怎么做的,上海优化外包公司排名,福建省城乡和建设厅网站,学做网站论文章目录 1.cpu工作方式2.python全局解释器锁与多线程3.其他语言的多线程4.如何解决假的多线程 1.cpu工作方式 先来先服务(First Come, First Served,FCFS): 最简单的调度算法,按照作业或进程到达的顺序依次执行。没有…

文章目录

      • 1.cpu工作方式
      • 2.python全局解释器锁与多线程
      • 3.其他语言的多线程
      • 4.如何解决假的多线程

1.cpu工作方式

先来先服务(First Come, First Served,FCFS):
最简单的调度算法,按照作业或进程到达的顺序依次执行。没有考虑作业的执行时间,可能会导致长作业等待时间过长(作业或进程执行时间长的情况下)。

最短作业优先(Shortest Job Next,SJN):
选择下一个最短的作业或进程执行,以最小化平均等待时间。需要预先知道每个作业或进程的执行时间,通常用于批处理系统。

最短剩余时间优先(Shortest Remaining Time Next,SRTN):
是SJN的抢占式版本,允许更短的作业或进程中断当前执行的作业或进程。每次到达一个新的作业或进程时,调度器会检查其估计的剩余执行时间,并决定是否切换到新的作业或进程。

轮转调度(Round Robin):
将CPU时间分成多个时间片(固定大小的时间段),按照顺序分配给不同的进程。当一个时间片用完时,当前进程被暂停并放回就绪队列的末尾,下一个进程开始执行。轮转调度适用于时间片短小,并且进程需要相对公平的CPU时间的场景。

优先级调度(Priority Scheduling):
每个进程或作业都有一个优先级,操作系统根据这个优先级来决定下一个要执行的进程。高优先级的进程将优先于低优先级的进程执行。但是,如果优先级过高可能会导致低优先级的进程饥饿(永远得不到执行)。

多级反馈队列调度(Multilevel Feedback Queue):
将进程划分为几个队列,并分配不同的优先级。新到达的进程首先进入最高优先级的队列。如果一个进程在给定时间片内未完成,则它将被移动到下一个更低优先级的队列中。这种方法结合了轮转调度和优先级调度的特点。

实时调度(Real-Time Scheduling):
用于实时系统,其中任务必须在特定的截止期限内完成。实时调度包括静态优先级调度(任务的优先级在创建时确定,并且不会改变)和动态优先级调度(优先级可以在运行时改变)。

2.python全局解释器锁与多线程

什么是全局解释器锁

全局解释器锁(Global Interpreter Lock,GIL),是为了保证线程安全而引入的互斥锁。众所周知,python是一种解释性语言。每一行代码都会被python解释器经过解析后才能执行。而在任意一个时间片,只有一个线程可以拿到解释器锁,也就是说,任意一个时间片,只有拿到解释器锁的那个线程可以执行,其他线程都处于等待状态。

为什么会有全局解释器锁

历史原因:早期的 Python 设计是为了简化内存管理和线程安全性。GIL 最初是为了保护 Python 对象内存结构不被并发线程破坏而引入的。在 Python 的早期版本中,GIL 是确保线程安全的一个简单有效的方式。

内存管理简化:Python 的内存管理由其自己的内存管理器负责,而 GIL 确保了在解释器级别上只有一个线程可以修改 Python 对象的内存结构。这样做简化了解释器的实现和维护,并且减少了需要考虑的并发问题,尤其是在 Python 解释器中涉及引用计数等细节时。

IO密集型 && 计算密集型操作

IO密集型操作,大部分情况下,指的是文件的读写操作
计算密集型更多的是进行数值运算。
对于IO密集型操作,在读取多个文件时,多个线程本身就存在切换,因此即使存在GIL,没有实现真正的多线程操作,也仍然可以在一定程度上提高效率。而在计算密集型操作上,由于每次只有一个线程在执行,即使开启多个线程,在任意时刻也只会有一个线程执行,因此,在计算密集型任务上,python多线程斌不会真正提高计算相率,相反,由于线程切换,甚至可能降低计算效率。

3.其他语言的多线程

在其他语言,比如c++ 、c#、Java,没有类似于python的GIL设定,可以实现真正的多线程并行操作。即使针对计算密集型任务,也可以通过多个任务并行,来实现加速的效果。

4.如何解决假的多线程

  • 使用多进程:Python 的 multiprocessing 模块允许创建多个进程,每个进程都有自己独立的解释器和内存空间,因此能够充分利用多核 CPU。
  • 使用并行计算库:例如 concurrent.futures 模块中的 ThreadPoolExecutor 和 ProcessPoolExecutor 类,或者第三方库如Dask、joblib 等,它们能够在多个核心上并行执行任务。
  • 使用 C 扩展或者 Cython:将性能关键部分用 C 或 Cython 编写,可以绕过 GIL 的限制,从而实现更好的并行性能。
http://www.hrbkazy.com/news/29948.html

相关文章:

  • 网站微信登录怎么做的福州短视频seo推荐
  • 甘肃建筑工程网云速seo百度点击
  • 网站建设汇编资料青岛关键词排名提升
  • wordpress清新模板下载免费seo软件
  • 网创八步的第七步优化设计七年级上册数学答案
  • 注册了自己的网站如何做品牌宣传与推广
  • 网站优化效果自助建站工具
  • c 做的网站又哪些网站seo置顶
  • 网站开发竞品分析营销软文范例大全
  • dedecms确定网站风格小红书推广价目表
  • 石家庄学网站建设百度推广登录平台app
  • 网站导航栏不显示北京网站优化快速排名
  • 有没有做古装衣服的网站百度搜索广告价格
  • 湖南中海建设集团有限公司网站2022近期时事热点素材
  • 电子商务网站建设的方法seowhy
  • 网站建设总结材料网站优化网络推广seo
  • 长沙手机网站建设公司哪家好百度大数据
  • 网站建设和维护管理预算濮阳市网站建设
  • 用vs与dw做网站百度一下百度网页官
  • 舒城做网站网站建设选亿企网络
  • 齐诺网站建设东莞网站建设做网站小璇seo优化网站
  • 医院网站建设方案招标文件seo关键词排优化软件
  • 网站建设服务 杭州企业推广是什么职业
  • 58南浔做网站正规推广平台
  • 个人如何做免费网站2345网址导航电脑版官网
  • t型布局网站怎么做郑州网站定制
  • 长沙seo优化哪家好武汉seo托管公司
  • 做gay网站违法吗网站建设公司好
  • 企业做外贸网站常用术语福州seo关键字推广
  • 网站建设与运营及营销服务企业网站的类型