Я не совсем понял про потоки в Python. С одной стороны они системные. С другой говорится, что Python до 3.2 отсчитывал по 100 тиков, а потом делал что-то. Python после 3.2 выполняет что-то по истечении 5мс.
И я вот сколько не смотрю видео не могу понять что именно происходит в этот момент. Или по истечении этого промежутка времени Python форсирует переключение системных потоков?
Если так, то как работает механизм гарантирующий, что поток в Python не зависнет на середине? Типа часть операций сделал, а часть не успел и его перещелкнули.
Можно вот более развернуто написать, а не просто что это GIL так работает.
В версии 3+ если поток один, то ничего не перещелкивается (в отличие от 2.х).
На работу потока выделяется определенное время после чего управление передается другому потоку. Поток может прерваться только отрабтав байткод (не в середние), но это может быть середина питон кода, т.е. прерывается в любом месте. Если код - расширение на C, то оно часто не учасвтует в захвате GIL и может работать параллельно без блокировок, т.е. блокируется только питон код, а расширения работают в потоках без блокировок.
А как тогда решается проблема с тем, что поток может быть прерван на середине, а потом другой поток может поменять данные которые первый потока взял в обработку?