IZ
Gil приводит к тому что реально исполняется только один поток в один момент времени, но это с точки зрения строк кода, а вот если строка это io, то в этот момент gil отпускается и могут работать другие потоки.
Из того что я написал, кажется, что при достаточно большом количестве io операций в коде, threading становится полезным. Т.е. накладные расходы от переключений между потоками компенсируются отсутствием простоя при ожидании io.
Что не так в моих рассуждениях?


