Articles of gil

Python requiere un GIL. Pero Jython y IronPython no lo hacen. ¿Por qué?

¿Por qué puedes ejecutar Jython y IronPython sin la necesidad de un GIL pero Python (CPython) requiere un GIL?

¿Dónde puedo encontrar una lista de funciones numpy que liberan la GIL?

He encontrado varias preguntas de SO sobre este tema de una forma u otra, pero ninguna de ellas en realidad da una lista o se refiere a una. Esta pregunta se refiere a una página wiki , pero mientras que la página wiki habla sobre GIL y subprocesos múltiples, no proporciona una lista de las […]

Cómo evitar la advertencia de gcc en la extensión Python C al usar Py_BEGIN_ALLOW_THREADS

La forma más sencilla de manipular el GIL en las extensiones Python C es usar las macros proporcionadas: my_awesome_C_function() { blah; Py_BEGIN_ALLOW_THREADS // do stuff that doesn’t need the GIL if (should_i_call_back) { Py_BLOCK_THREADS // do stuff that needs the GIL Py_UNBLOCK_THREADS } Py_END_ALLOW_THREADS return blah blah; } Esto funciona muy bien, permitiéndome liberar GIL […]

¿Python GIL evita que el uso de la CPU exceda el 100% en máquinas de varios núcleos?

Muchas referencias dicen que, Python GIL reduce el rendimiento del código de subprocesos múltiples en una máquina con varios núcleos, ya que cada subproceso deberá adquirir el GIL antes de la ejecución. En otras palabras, parece que GIL hace un progtwig Python de subprocesos múltiples en un modo de subproceso único, de hecho. Por ejemplo: […]

Python GIL y multihilo

Me gustaría separar mi aplicación sigle-thread a la cantidad de hilos de trabajo. Solo 1 pregunta – ¿Qué pasa con el desempeño de esta acción? Si GIL evita que Python ejecute más de 1 subproceso, ¿tendré algún beneficio? Otro punto (desde el punto de vista de c / c ++): como sé, cada subproceso, de […]

Usando un diccionario en Cython, especialmente dentro de nogil

Estoy teniendo un diccionario, my_dict = {‘a’:[1,2,3], ‘b’:[4,5] , ‘c’:[7,1,2]) Quiero usar este diccionario dentro de una función de Cython nogil. Entonces, traté de declararlo como cdef dict cy_dict = my_dict Hasta esta etapa está bien. Ahora necesito iterar sobre las claves de my_dict y si los valores están en la lista, iterar sobre ella. […]

Python Global Interpreter Lock GIL problema

Quiero proporcionar un servicio en la web para que las personas puedan probar el rendimiento de un algoritmo, que está escrito en Python y se ejecuta en la máquina Linux. básicamente, lo que quiero hacer es que hay un controlador de PHP muy trivial, digamos start_algo.php, que acepta la solicitud proveniente del navegador, y en […]

Python y hilos verdaderamente concurrentes.

He estado leyendo durante horas y ahora puedo entender completamente cómo el subprocesamiento múltiple de Python es más rápido que un solo subproceso. La pregunta realmente proviene de GIL. Si hay GIL, y solo un subproceso se está ejecutando realmente a la vez, ¿cómo puede el subprocesamiento múltiple ser más rápido que un único subproceso? […]

Entendiendo Python GIL – E / S enlazado vs CPU enlazado

De la documentación de threading de python. En CPython, debido al locking de intérprete global, solo un hilo puede ejecutar el código de Python a la vez (aunque ciertas bibliotecas orientadas al rendimiento pueden superar esta limitación). Si desea que su aplicación haga un mejor uso de los recursos computacionales de las máquinas con varios […]

Hilo de Python y GIL

Estaba leyendo sobre el GIL y nunca se especificó realmente si esto incluye el hilo principal o no (supongo que sí). La razón por la que pregunto es porque tengo un progtwig con una configuración de subprocesos que modifica un diccionario. El hilo principal agrega / elimina en función de la entrada del jugador, mientras […]