Сопрограммы на самом деле не улучшают производительность, за исключением очень ограниченного смысла: многопоточные программы имеют определенные накладные расходы, а сопрограммы обеспечивают некоторые преимущества многопоточности без возникновения этих накладных расходов. Однако большинство многопоточных приложений (даже в C-Python с его GIL) получают преимущества от перекрытия, когда один поток блокируется при системном вызове, а другие потоки могут работать: это обычно не происходит с сопрограммами.
Если у вас есть несколько потоков, то обычно перекрывающиеся выигрывают, и сопрограммы не дают выигрыша в производительности. Если вам нужны тысячи потоков, тогда издержки на переключатели потоков будут намного больше, и в этом случае сопрограммы могут дать преимущество, но сокращение числа потоков, вероятно, даст гораздо большее преимущество.
Реальное преимущество сопрограмм заключается в том, что для приложений производителей / потребителей они значительно упрощают кодирование и, следовательно, ускоряют его кодирование.