Почему моя многопоточная программа на Python выполняется медленнее, чем однопоточный вариант? Как это вообще возможно? 😱 Если вы задавали когда-то себе такой вопрос или вам его задавали на собеседовании, но вы не ответили, то самое время узнать про GIL (global interpreter lock, "джил", если произносить на русском). Концепция GIL по-русски на Вики: https://ru.wikipedia.org/wiki/Global_Interpreter_Lock: ☝️GIL является самым простым способом избежать конфликтов при одновременном обращении разных потоков к одним и тем же участкам памяти. Когда один поток захватывает его, GIL, работая по принципу мьютекса, блокирует остальные. Нет параллельных потоков — нет конфликтов при обращении к разделяемым объектам. Очерёдность выполнения потоков определяет интерпретатор в зависимости от реализации, переключение между потоками может происходить: когда активный поток пытается осуществить ввод-вывод, по исчерпании лимита выполненных инструкций либо по таймеру. 👨💻GIL существует уже давно и никуда
Почему многопоточная программа медленнее, чем однопоточная.
17 мая 202217 мая 2022
119
~1 мин