| Casa | Hardware | Redes | Programación | software | Criticar | Sistemas |   
Programación  
  • C /C + + Programming

  • Lenguajes De Programación

  • Delphi Programación

  • Programación Java

  • JavaScript Programación

  • Programación PHP /MySQL

  • Perl Programming

  • Python Programming

  • Rubí Programación

  • Visual Basics Programación
  •  
    Conocimientos Informáticos >> Programación >> Python Programming >> Content
    ¿Qué es un Python GIL
    ? Si usted ha estado trabajando con Python y quiere empezar a experimentar con las técnicas de programación más avanzadas , el aprendizaje sobre bloqueo intérprete global ( GIL ) es una buena idea. GIL es un algoritmo que se encarga de la ejecución de varios subprocesos en un programa Python. GIL es un requisito cuando se está trabajando con varios temas , porque la gestión de memoria de CPython no es seguro para subprocesos . Además , el GIL ha sido conocido para degradar un rendimiento de programas . Un ejemplo es que puede tomar más tiempo para dos temas que llamar a la misma función de un subproceso llama a la función dos veces. Usando GIL

    En un programa multi-hilo Python un hilo no puede acceder de forma segura objetos de Python a menos que el GIL está en manos del subproceso actual . El GIL se asegura de que ambos temas están actualizando correctamente las referencias de objeto que se llama. Para empezar a utilizar el GIL necesita guardar el estado hilo en una variable de ubicación y liberar el bloqueo intérprete global. En este punto se puede realizar la operación de bloqueo de entrada /salida y volver a adquirir el bloqueo intérprete mundial cuando es completa . Por último , restaurar el estado de rosca de la variable local. Usted puede utilizar el siguiente ejemplo de macro para simplificar el proceso :

    Py_BEGIN_ALLOW_THREADS ... Haga un poco de bloqueo de operación de E /S ... Py_END_ALLOW_THREADS
    Calling Python Code

    menudo temas son creados a partir de otros lenguajes de programación como C y si necesita llamar a múltiples hilos , entonces usted necesita utilizar GIL . Primero debe registrar estos temas con un intérprete a través de una estructura de datos de estado de la hebra y luego adquirir el GIL . Para simplificar este proceso, puede utilizar las funciones de " PyGILState_Release () " " PyGILState_Ensure ()" y . El siguiente es un ejemplo de cómo aplicar este concepto:

    PyGILState_STATE GSTATE ; GSTATE = PyGILState_Ensure () ;/* Realizar acciones Python aquí . * /resultado = CallSomeFunction () ;/* Evaluar resultado o manejar excepción * //* Suelte el hilo. No API Python permite más allá de este punto . * /PyGILState_Release ( GSTATE ) ;
    Python Temas

    Python un hilo es un hilo del sistema real como cualquier otra ejecución del programa. Cuando se ejecuta un hilo Python crea una estructura de datos pequeña con el estado intérprete. Después de esto un nuevo hilo se inicia y se llama el " PyEval_CallObject . " El último paso es una función de C simple que se ejecuta Python lo especifican . El GIL controla cuidadosamente la ejecución de cada hilo. El siguiente es un ejemplo de un hilo Python :

    importación timeimport threadingclass CountdownThread ( threading.Thread ) : def __ init__ (self, count) : threading.Thread.__init__ (auto ) self.count = countdef plazo (auto- ) : mientras self.count > 0 : print " Cuenta atrás " , self.countself.count - = 1time.sleep ( 5 ) retorno
    GIL Problemas y sustitución

    desarrolladores Python han discutido la eliminación del GIL , pero se han topado con algunos problemas . Un problema que a menudo se menciona con GIL es que se evita que los programas CPython multiproceso de aprovechar al máximo los procesadores multi -core. Cualquier sustitución GIL debe ser simple y concurrentes cuando se trabaja con hilos . Debe ser más rápido que GIL y debe tener una buena compatibilidad API . Un ejemplo de la compatibilidad API es tener una buena localización al enumerar los objetos que apunta.

    Previous :

    next :
      Artículos relacionados
    ·Cómo instalar Python en HostMonster 
    ·Tutorial de Python Keyboard 
    ·Cómo determinar el orden alfabético en Python 
    ·Cómo ejecutar un script de Python en Windows 
    ·Cómo dividir una cadena en una lista en Python 
    ·Cómo prevenir más de una instancia de un programa en …
    ·Cómo hacer cumplir el límite de lista en Python 
    ·Cómo agregar todos los elementos de una lista en Pytho…
    ·Cómo diseñar software de contabilidad 
    ·Cómo añadir bordes a un marco en Python 
      Artículos destacados
    ·El chat de voz Proyectos en Visual Studio 
    ·Cómo utilizar la cadena de consulta SQL en VB6 con Cry…
    ·¿Cómo deshacerse de un JFrame 
    ·Cómo enviar un Argumento en VBA 
    ·Cómo controlar el número de archivos de datos se pued…
    ·Definición de Subcadena 
    ·Cómo crear variables en Perl 
    ·Cómo conseguir un Root Ruta del archivo del servidor m…
    ·Cómo pasar parámetros a subrutinas en Perl 
    ·Cómo quitar un bloque PHP 
    Copyright © Conocimientos Informáticos http://ordenador.wingwit.com