Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

300
Vistas
¿Cómo se implementa CPython?

Así que últimamente encontré una explicación para el intérprete y compilador de Python (CPython específicamente).

Por favor corrígeme si estoy equivocado. Sólo quiero estar seguro de que entiendo estos conceptos específicos.

Entonces, ¿CPython se compila (en código de bytes) y luego se interpreta (en el PVM)? ¿Y qué hace exactamente el PVM? ¿Lee el código de bytes línea por línea y traduce cada uno a instrucciones binarias que se pueden ejecutar en una computadora específica? ¿Significa esto que una computadora basada en un procesador Intel necesita un PVM diferente de una computadora basada en AMD?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

  1. Sí, CPython se compila en un código de bytes que luego ejecuta la máquina virtual.
  2. La máquina virtual ejecuta las instrucciones una por una. Está escrito en C (pero puede escribirlo en otro idioma) y parece una gran declaración if/else como "si la instrucción actual es esta, haga esto; si la instrucción es esta, haga otra cosa", y así sucesivamente. Las instrucciones no se traducen a binario, por eso se llama intérprete .
    1. Puede encontrar la lista de instrucciones aquí: https://docs.python.org/3.10/library/dis.html#python-bytecode-instructions
    2. La implementación de la VM está disponible aquí: https://github.com/python/cpython/blob/f71a69aa9209cf67cc1060051b147d6afa379bba/Python/ceval.c#L1718
  3. Bytecode no tiene un concepto de "línea": es solo una secuencia de bytes. El intérprete puede leer un byte a la vez y usar otra declaración if/else para decidir qué instrucción está mirando. Por ejemplo:
     curr_byte = read_byte() if curr_byte == 0x00: # Parse instruction with no arguments curr_instruction = DO_THING_A; args = NULL; elif curr_byte == 0x01: another_byte = read_byte() if another_byte == 0x00: # Parse a two-byte instruction curr_instruction = DO_THING_B; args = NULL; else: # Parse a one-byte instruction # with one argument curr_instruction = DO_THING_C; args = another_byte >> 1; # or whatever elif curr_byte == ...: ... # go on and on and on
  4. El objetivo del código de bytes es que puede ser ejecutado por otro programa (el intérprete o máquina virtual) en casi cualquier hardware. Por ejemplo, para que CPython se ejecute en hardware nuevo, necesitará una cadena de herramientas C (compilador, enlazador, ensamblador, etc.) para este hardware y un montón de funciones que Python puede llamar para hacer cosas de bajo nivel (asignar memoria, salida de texto, creación de redes, etc.). Una vez que tenga eso, escriba código C que pueda ejecutar el código de bytes, y eso es todo.
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda