от него? Неужели он нужен только для того чтобы не было проблем с подсчетом ссылок для управления памятью?
"Python подсчитывает количество ссылок для корректного управления памятью. Это означает, что созданные в Python объекты имеют переменную подсчёта ссылок, в которой хранится количество всех ссылок на этот объект. Как только эта переменная становится равной нулю, память, выделенная под этот объект, освобождается.
Проблема, которую решает GIL, связана с тем, что в многопоточном приложении сразу несколько потоков могут увеличивать или уменьшать значения этого счётчика ссылок. Это может привести к тому, что память очистится неправильно и удалится тот объект, на который ещё существует ссылка."
гил нужен, чтобы не получился рейс кондишн на уровне интерпритатора, да. из минусов - у нас единовременно работает только один поток, но есть операции, которые позволяют отпустить гил и дать возможность работать другомим потокам. Речь об I/O операциях, таких как чтение файлов, реквесты в сеть и т.д. , где интерпретатор просто ждет результата выполнения операции. Кроме этого к таким операциям относят выполнение экстеншнов, написанных на C. Там тоже есть возможность отпустить гил. Таким образом, мы можем добиться параллельного выполнения нашего кода, а гил не будет нам мешать
То есть грубо говоря я могу читать здоровенный файл в одном потоке, а в другом будет генерироваться какой-то массив и все будет реально параллельно?
О нет, так делать не нужно)
Обсуждают сегодня