Встречается на собеседованиях • сегодня

Позволяет ли GIL в Python использовать многопоточность для параллельных задач

GIL (Global Interpreter Lock) в CPython предотвращает параллельное выполнение байт-кода Python в нескольких потоках, но это не значит, что многопоточность бесполезна.

Когда потоки полезны:

  • Для I/O-bound задач (сетевые запросы, чтение файлов), где потоки могут работать параллельно, так как GIL освобождается во время ожидания.
  • Для задач, где важно сохранить порядок выполнения (например, GUI-приложения).

Когда потоки неэффективны:

  • Для CPU-bound задач (математические вычисления), где GIL блокирует параллелизм. Здесь лучше использовать multiprocessing.

Пример с потоками для I/O:

python
import threading
import requests

def fetch_url(url):
    response = requests.get(url)
    print(f"{url}: {len(response.content)} bytes")

urls = ["https://python.org", "https://google.com"]
threads = [threading.Thread(target=fetch_url, args=(url,)) for url in urls]

for t in threads:
    t.start()
for t in threads:
    t.join()

Для CPU-bound задач используйте multiprocessing или асинхронность (asyncio).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы