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

Какая особенность параллельности в Python

В Python существует GIL (Global Interpreter Lock) — глобальная блокировка интерпретатора, которая позволяет выполняться только одному потоку за раз, даже в многопоточных приложениях. Это ограничивает параллельность в CPU-задачах, но не мешает в I/O-операциях. Для настоящего параллелизма лучше использовать модули multiprocessing или concurrent.futures.

Пример с потоками (GIL ограничивает CPU-работу):

python
import threading

def count():
    for _ in range(1_000_000):
        pass

threads = [threading.Thread(target=count) for _ in range(4)]
for t in threads:
    t.start()
for t in threads:
    t.join()

Пример с процессами (обходит GIL):

python
from multiprocessing import Process

def count():
    for _ in range(1_000_000):
        pass

processes = [Process(target=count) for _ in range(4)]
for p in processes:
    p.start()
for p in processes:
    p.join()

Для асинхронного I/O подходит asyncio.

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

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

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

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