Поток не всегда имеет ввод / вывод. Можно было бы, чтобы один поток занимался обработкой чисел, другой обрабатывал ввод-вывод. Поток сокращения числа с вашим предложением никогда не будет отбрасывать GIL, чтобы другой поток мог обрабатывать ввод / вывод.
Чтобы обеспечить запуск каждого потока, поток по умолчанию отбросит GIL через 5 мс (Python 3), если он не сделал этого раньше из-за ожидания ввода-вывода.
Вы можете изменить этот интервал с помощью sys.setswitchinterval()
.
Threading - это простой метод параллелизма. Для более эффективной техники параллелизма обратитесь к asyncio
, который предлагает однопоточный параллелизм с использованием сопрограмм.