20 корутин тебе стоить будут несколько байт. 20 тредов около 10мб памяти. 1-10к+ параллельных тредов это уже жирно
у каждого треда свой стек, переключение на уровне ОС (контекст свитчи и все такое). особо не заметно на 1 запрос = 1 тред. но если внутри параллелишь активно (где-то базу дернул из двух потоков, где-то десяток запросов на другие сервисы отправил) и это все начнет сильно цпу палить
Я конкретно про этот пункт. A thread has access to the same address space as other threads in your process, and can do whatever they want with it. You have to take extreme pains to avoid accidentally doing the wrong thing. You'll probably mess it up, and the symptoms will show up in an unrelated part of the program 10 minutes later.
Относительно него корутины ничем не лучше потоков.