Понимание python GIL - привязка ввода-вывода к загрузке процессора
ОтPython Threading документация
В CPython из-за Глобальной блокировки интерпретатора только один поток может выполнять код Python одновременно (даже если некоторые ориентированные на производительность библиотеки могут преодолеть это ограничение). Если вы хотите, чтобы ваше приложение лучше использовало вычислительные ресурсы многоядерных машин, рекомендуется использовать многопроцессорность. Тем не менее, многопоточность по-прежнему является подходящей моделью, если вы хотите запускать несколько задач, связанных с вводом / выводом одновременно.
Теперь у меня есть нить работника, как это
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
Вотw.analyze()
делать две вещи
requests
библиотекаАнализируя очищенный HTML с помощьюpyv8
библиотека JavaScriptНасколько я знаю,1
связан ли ввод-вывод и2
привязан к процессору.
Означает ли это, что GIL подал заявку на2
и моя программа не будет работать должным образом?