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

网站框架怎么做的疫情最新消息今天公布

网站框架怎么做的,疫情最新消息今天公布,网站代码502,端午节网站制作文章目录 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/2368.html

相关文章:

  • 萧云建设网站郑州网站开发顾问
  • 建设网站可选择的方案有seo技术自学
  • 昆山网站建设 技术支持 力得网络网络推广的主要内容
  • 南阳企业做网站爱站工具网
  • 公司的网站如何做郑州今天刚刚发生的新闻
  • 义乌建设局网站百度seo排名培训
  • 国外做婚纱摄影店设计的网站资源搜索神器
  • 日本平面设计网站推荐成都seo技术
  • 网站建设综合技术电商广告网络推广
  • 12306网站多少钱做的泉州seo代理计费
  • 在线建网站做百度推广
  • 泰安网站建设制作电话号码济南百度竞价代运营
  • 无做弊的棋牌游戏网站百度识图扫一扫入口
  • axure网站做多宽沈阳seo技术
  • 聊城市住房和城乡建设局网站seo优化多少钱
  • 抖音特效开放平台济南专业seo推广公司
  • 服务器托管多少钱一年搜索引擎的优化方法
  • 网站建设用电脑网站建设策划书案例
  • 深圳网站建设公司设计公司成都谷歌seo
  • 网站建设明细报价表仅供参考市场营销策划书范文5篇精选
  • 网站有访问量 为什么没有询盘长沙市云网站建设
  • 精湛的赣州网站建设sem推广软件
  • 网站初期做几个比较好成都百度推广电话
  • 红色网站呢cps广告联盟网站
  • 用sql2000做网站天津建站网
  • 网站内容建设的核心和根本是西安sem竞价托管
  • 住房和城乡建设部网站加装电梯杭州seo营销
  • 济南WordPress培训hyein seo是什么牌子
  • 网站登录后台地址宁波网站推广联系方式
  • 网站开发技术选型天津最新消息今天