• Python解释器与GIL锁


    一、Python解释器

    python写的.py文件想要运行必须通过python解释器转化为CPU可以识别的代码(0101...)。python存在多种解释器,由不同的语言开发,常见的解释器如下:

    Cpython

    Cpython是官方网站推荐的解释器,它是用C语言开发的,我们从官网下载python后,命令行运行python就是启动了Cpython。

    Ipython

    Ipython是在Cpython基础上增加了交互功能,jupyter notebook就是使用了ipython。

    PyPy

    PyPy是另一个python解释器,他的目标是执行速度,他和Cpython有所不同。

    Jpython

    Jpython是运行在Java平台上的解释器,可以直接把python代码编译成Java字节码执行。

    IroPython

    IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

     二、GIL锁(全局解释器锁)

    GIL:每个线程在执行的过程都要先获取GIL,保证同一时刻只有一个线程可以执行代码。

    这是C语言python解释器中的一个缺点,这是一个历史遗留问题,很难改变。

    使用Cpython解释器,python无法发挥多核CPU的效率。

    计算密集型程序

    比如计算1到1000000的立方和,这个时候用进程。

    IO密集型程序

    文件读写、网络收发等。存在等待、延时,可以用线程和协程。

     三、如何解决GIL问题

    1. 换一个python解释器

    2. 使用其他语言来写python线程的内容(比如C语言),然后使用python调用。当然也可以用其他语言,体现了python胶水语言的特性。

    参考链接:

    [1] https://www.liaoxuefeng.com/wiki/1016959663602400/1016966024263840

  • 相关阅读:
    OC之class与metaclass
    call vs apply
    ABI
    WEB服务器的四种类型
    情绪控制
    位置无关代码
    Finding Leaks Using Instruments
    Mac之TwoLevel Namespace
    Apache的几个特性
    Mac之debuging symbol
  • 原文地址:https://www.cnblogs.com/yunxiaofei/p/11108869.html
Copyright © 2020-2023  润新知