Comprensión de Python GIL: enlace de E / S frente a CPU
Deroscado de pitón documentación
En CPython, debido al Bloqueo global del intérprete, solo un subproceso puede ejecutar código 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 multinúcleo, se le recomienda usar multiprocesamiento. Sin embargo, el subproceso sigue siendo un modelo apropiado si desea ejecutar varias tareas vinculadas de E / S simultáneamente.
Ahora tengo un trabajador de hilo como este
def worker(queue):
queue_full = True
while queue_full:
try:
url = queue.get(False)
w = Wappalyzer(url)
w.analyze()
queue.task_done()
except Queue.Empty:
queue_full = False
aquíw.analyze()
haciendo dos cosas
requests
bibliotecaAnalizando el html raspado usandopyv8
biblioteca javascriptPor lo que sé,1
está unido a E / S y2
está vinculado a la CPU.
¿Eso significa que GIL solicitó2
y mi programa no funciona correctamente?