#python
Переключение в версии 2.х понятно, раз в 100 тиков происходит проверка на переключение потока. В версии 3.х тики убраны, теперь всё базируется на времени. Как построена логика переключения в версии 3.х?
Ответы
Ответ 1
Если быть точным, то реализация GIL изменилась в версии 3.2 В python < 3.2 переключение действительно происходило каждые 100 инструкций - хороший перевод статьи от Дэвида Бизли Если говорить о python > 3.2, то суть такая. С одной стороны поток не отдает GIL пока его не попросят. С другой стороны, если GIL захвачен, то поток сначала подождет некоторое время (5мс, sys.getcheckinterval) - а потом уже просит освободить GIL. Получается, что переключение происходит не чаще, чем раз в 5 мс. Достаточно хорошо этот момент осветил пресловутый Дэвид Бизли (в комментариях @m9_psy дал ссылку на презентацию), и не менее пресловутый Андрей Светлов в своем блоге
Комментариев нет:
Отправить комментарий