Я ищу способ определить, когда существующий цикл событий почти заполнен, чтобы я мог запустить новый поток цикла событий
Я не думаю, что такой подходможет работать из-за GIL .Пример использования, который вы, похоже, описываете, - это остановка циклов событий из-за перегрузки процессора.В этом случае добавление большего количества потоков не поможет просто потому, что работа ЦП, за исключением редких исключений , не распараллелена в Python.
Если ваши циклы событий слишком загружают ЦПсвязанных с работой (например, вычисления), вы должны переместить эти отдельные единицы работы в отдельные потоки, используя run_in_executor
.Если этого недостаточно, вы можете попробовать переключиться на uvloop , высокопроизводительную замену асинхронного асинхронного ввода для CPython.Вы также можете попробовать asyncio с PyPy .
Если ни один из этих параметров не работает, следующая вещь, которую нужно попробовать, это какой-то вариант многопроцессорной обработки.(Или более низкоуровневый / ориентированный на производительность язык.)