【问题标题】:What is the execution process for Python?Python的执行过程是怎样的?
【发布时间】:2021-11-06 16:09:44
【问题描述】:

我知道 Python 是一种解释型语言,但我想知道整个执行过程。就像.py 文件的执行方式一样。 例如,.c 文件被编译为.asm 文件,然后汇编器将其转换为“.o”文件,最后链接器链接目标文件以形成.exec 文件。 python的流程是什么?

【问题讨论】:

  • 明确地说,Python 是一种具有多个解释器的语言规范。这里没有一个答案。您对 CPython 参考解释器如何工作的描述感到满意吗? 通常人们提到“Python 解释器”的意思是“CPython”,但值得一试。
  • 有很多关于 CPython 如何运行 python 脚本的文章。见towardsdatascience.com/how-does-python-work-6f21fd197888 一个,谷歌显示更多:)
  • 通常没有“解释性语言”之类的东西。实现可以被解释,但语言通常与实现无关。 Python 具有解释、编译和 JIT 实现。

标签: python c


【解决方案1】:
  1. Python 解释器按顺序处理脚本。
  2. 然后代码被编译成一种形式的指令集,称为字节码。 字节码是一种低级语言。它是一种中间的、与机器无关的代码,它优化了代码执行的过程。因此,解释器在下次执行代码时忽略了编译步骤。
  3. 在这些之后,解释器传输代码以供执行。 Python 虚拟机 (PVM) 是 Python 解释器过程的最终步骤。它是安装在系统中的 Python 环境的一部分。 PVM 在 Python 运行时加载字节码并读取每个操作并按照指示执行它们。它是实际运行脚本的组件

【讨论】:

    【解决方案2】:

    运行您创建的脚本 (.py) 后,python 编译字节码 (.pyc)(不是处理器的一组指令)。该字节码是一组用于 PVM(Python 虚拟机)的指令。 PVM 执行这个字节码。

    结果: .py -> .pyc -> PVM 执行

    如果.py文件发生变化,系统会重新编译.pyc。

    【讨论】:

    • 不,.pyc 不会馈送到 VM。这是 .py 编译的一个副作用,一个缓存文件。此外,.pycs 仅在文件为 imported(或运行 compileall)时出现。
    • @AKX:在给出的“流程图”中用“字节码”代替“.pyc”是准确的;即使没有生成.pyc,您运行的脚本仍然会在内存中编译为字节码,然后执行。
    • 这样会更准确,是的。 :)
    猜你喜欢
    • 2019-11-29
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多