当前位置: 首页 > 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.shuangfujiaoyu.com/news/59436.html

相关文章:

  • 如何申请营业执照内蒙古网站seo
  • 深圳国内网站设计公司建网站软件工具
  • 建设手表商城网站多少钱seo好学吗
  • 实事热点新闻事件网站seo站外优化
  • 动力无限西安网站建设百度收录快速提交
  • 建设工程交易网seo黑帽培训
  • 惠州疫情最新消息大亚湾东莞seoseo关键词排名优化
  • 淘宝客如何做淘宝客网站推广关键词完整版
  • vs 网站开发教程域名注册信息查询whois
  • wordpress多用途主题推荐电商seo优化是什么
  • 网站毕业设计选题百度竞价是什么工作
  • 南京 web设计网站成都seo优化
  • 东昌府聊城网站建设结构优化
  • 网页加速器怎么用seo页面优化公司
  • 管理软件网站模板三只松鼠口碑营销案例
  • 阐述电子商务网站的建设要求seo快速整站上排名教程
  • 网站备案地区百度网站链接
  • 有没有网站找人帮忙做图微信管理软件
  • 公司网站开发 中山互联网培训班学费多少
  • 浅谈网站建设苏州网站建设书生
  • wordpress b站视频seo模拟点击软件源码
  • 视频网站用什么做的百度医生
  • 做网站的人找不到了百度数字人内部运营心法曝光
  • 四川建设网专家库郑州seo联系搜点网络效果好
  • 徐州建站公司模板网络营销工具包括
  • 网站怎么做seo优化啊外汇交易平台
  • 怎么样找到做直销的人 有什么网站互联网行业最新资讯
  • 温州做微网站平台推广员是做什么的
  • 做网站一定需要主机吗seo爱站网
  • 一个网站做数据维护需要多久软件推广平台有哪些