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

陕西网站建设通报企业关键词优化价格

陕西网站建设通报,企业关键词优化价格,wordpress 3.0.1 下载,114黄页的特点解释性 python是动态类型解释性语言,不管使用哪种解释器 因为“解释性语言”这个概念更多地是指代码的执行方式,而不是编译方式。在解释性语言中,代码在执行时会一行一行地解释并执行,而不是预先编译为机器语言。而即使使用了PyP…

解释性

python是动态类型解释性语言,不管使用哪种解释器

因为“解释性语言”这个概念更多地是指代码的执行方式,而不是编译方式。在解释性语言中,代码在执行时会一行一行地解释并执行,而不是预先编译为机器语言。而即使使用了PyPy解释器,PyPy使用了JIT(即时编译)技术,它会在代码运行时将代码编译为机器语言。其中的JIT编译技术仍然在运行时进行,代码仍然在运行时动态确定类型和解释执行。因此,尽管PyPy使用了编译技术加速代码的执行,但它仍然是解释性语言

动态性

动态语言(python)的运行速度为什么比静态语言(java)慢?

在 Java 和 Python (cpython解释器)中,都存在先编译为字节码,然后再在解释器或虚拟机中将字节码转换为机器语言的过程。那么为什么 Java 的运行速度会比 Python 快,python在运行时动态确定类型和进行解释会比java慢
静态类型的语言比如 C,Java,Go,需要在声明变量的时候带上类型。而 Python 就不用,Python 帮你决定一个变量是什么类型,并且可以随意改变。
动态类型为什么慢呢?每次检查类型和改变类型开销太大;如此动态的类型,难以优化
Python 的动态类型和动态内存分配也会对运行速度产生影响。Python 中的对象都是动态创建的,这就需要在运行时进行内存分配和回收,这会比静态分配更慢。

pypy解释器的大致运行过程

PyPy解释器既是解释性的,也是编译性的。
在PyPy解释器中,源代码首先会被编译成抽象语法树(AST),然后被编译成LLVM IR(Intermediate Representation,中间表示)。接着,LLVM IR会被传递给JIT编译器,生成对应的机器码,这些机器码被缓存起来以备下次调用(注意这里是在pypy解释器中的过程,而只有在运行代码的时候才会去用pypy解释器去解释)。这个过程中,JIT编译器根据实际情况来选择是否对代码进行即时编译如果发现某些代码被重复执行(如循环),JIT编译器会对这些代码进行优化并将它们编译成机器码,以提高程序性能。如果当 JIT 编译器无法对代码进行优化时,PyPy 仍然会使用解释器来执行 Python 代码
因此,PyPy解释器既包含解释器的特点,也包含编译器的特点。在运行过程中,PyPy解释器会将源代码解释执行,同时也会将部分代码编译成机器码,以提高程序性能。因此,可以说PyPy是一种混合型的解释器/编译器。

GIL

首先GIL锁是python 默认的cpython解释器带的,在此解释器下创建多线程是用户级线程,且cpython的多线程模型是多对一模型,即使你创建再多的多线程,也只会被映射到一个内核级线程上,内核级线程去排对竞争cpu。

那为什么cpython的多线程模型是多对一模型呢?

因为即使是多对多模型,python代码创建多个线程(用户级线程)最终被映射到了多个内核级线程上,然后这些内核级线程去排队竞争cpu,假设同时竞争到了cpu时间片,但是也只有一个内核线程有GIL锁,才能调用cpython解释器将python字节码解释成机器码执行,而那些没有GIL锁的内核线程即使分配到了cpu时间片,会发现没有GIL锁,无法调用cpython解释器,因此也就无法执行字节码,从而又被系统放入到阻塞队列中去等待GIL锁的资源。

即同一时刻只能有一个内核线程获取GIL锁然后被解释器解释执行,那么其它的内核线程就会增加操作系统调度和上下文切换的开销,而没有实际的性能提升

那为什么cpython中为什么要有GIL锁的存在

GIL锁的存在是为了保证解释器的线程安全性。因为CPython的解释器内部实现使用了大量的全局变量和共享数据结构,如果没有GIL锁的保护,多个线程同时访问这些数据结构会导致解释器的崩溃或者产生未定义的行为。通过GIL锁的机制,CPython确保了在任意时刻只有一个线程可以执行解释器的字节码,从而保证了解释器的线程安全性。

垃圾回收机制

python的垃圾回收机制主要是以引用计数为主,标记-清除是为了解决引用计数遗留的循环引用的问题;分代回收是用空间换时间的提升回收的效率

1.内存占用:由于垃圾回收机制需要维护内存中的所有对象(每个对象需要分配单独的空间来统计引用计数,这无形中加大的空间的负担,并且需要对引用计数进行维护)

2.CPU利用率:在垃圾回收期间,Python解释器需要进行大量的计算和操作,这会导致CPU利用率上升,从而降低程序的运行速度。

3.垃圾收集时间:Python解释器的垃圾回收机制需要花费一定的时间来扫描内存并处理垃圾对象,这可能会导致Python程序的运行速度变慢。

4.阻塞:垃圾回收机制的阶段,会暂停整个应用程序,等待标记清除结束后才会恢复应用程序的运行。

http://www.ds6.com.cn/news/66482.html

相关文章:

  • 电子产品网站建设模板网络推广价格
  • 学动漫去哪个学校湖南seo优化
  • 湛江模板建站哪家好石家庄seo优化公司
  • 国外一个专门做配乐的网站代运营一家店铺多少钱
  • C 做的窗体怎么变成网站长沙百度关键词搜索
  • wordpress4.8 php7kj6699的seo综合查询
  • 做网站中心线上营销推广渠道
  • 淘宝现在网站建设不能发布要发布上面类目郑州官网网站优化公司
  • bootstarp做网站不好看如何做好推广引流
  • 英文淘宝网站建设竞价托管代运营多少钱
  • 建设免费电影网站饥饿营销的十大案例
  • 网件路由器维修江门seo
  • php网站开发技术描述网页开发流程
  • 个人做网站开发指标竞价交易
  • 单个页面的网站足球联赛排名
  • 网络平台运营方案最好用的手机优化软件
  • 优秀的吉祥物设计网站seo查询在线
  • 网站设计的图片市场营销策划案的范文
  • 网站平台选择百度搜索提交入口
  • 南汇建设机械网站新媒体口碑营销案例
  • 网站seo网络优化公司网络seo啥意思
  • 济南做兼职网站视频剪辑培训
  • 网站建设百度搜索到左边的图百度官方网站下载安装
  • linux类似wordpress网页搜索引擎优化技术
  • 加盟做地方门户网站找片子有什么好的关键词推荐
  • 如何做招聘网站大连百度seo
  • wordpress百家号主题河南网站建设优化技术
  • 行政单位门户网站建设方案长沙网站推广工具
  • 网站制作用什么语言郑州网站关键词排名
  • 深圳做网站维护的公司看b站视频下载软件