Найти тему
Машинное обучение

Почему многопоточная программа медленнее, чем однопоточная.

Почему моя многопоточная программа на Python выполняется медленнее, чем однопоточный вариант? Как это вообще возможно? 😱

Если вы задавали когда-то себе такой вопрос или вам его задавали на собеседовании, но вы не ответили, то самое время узнать про GIL (global interpreter lock, "джил", если произносить на русском).

Концепция GIL по-русски на Вики: https://ru.wikipedia.org/wiki/Global_Interpreter_Lock:

☝️GIL является самым простым способом избежать конфликтов при одновременном обращении разных потоков к одним и тем же участкам памяти. Когда один поток захватывает его, GIL, работая по принципу мьютекса, блокирует остальные. Нет параллельных потоков — нет конфликтов при обращении к разделяемым объектам. Очерёдность выполнения потоков определяет интерпретатор в зависимости от реализации, переключение между потоками может происходить: когда активный поток пытается осуществить ввод-вывод, по исчерпании лимита выполненных инструкций либо по таймеру.

👨‍💻GIL существует уже давно и никуда не делся. В 2022 году про него спросят практически на любом собеседовании на должность Python программиста.

📰На Хабре вы найдете более глубокое объяснение принципа работы GIL: https://habr.com/post/84629/

Python/ django
Наука
7 млн интересуются