Понимание 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() делать две вещи

Очистите URL, используяrequests библиотекаАнализируя очищенный HTML с помощьюpyv8 библиотека JavaScript

Насколько я знаю,1 связан ли ввод-вывод и2 привязан к процессору.

Означает ли это, что GIL подал заявку на2 и моя программа не будет работать должным образом?

Ответы на вопрос(1)

Ваш ответ на вопрос