XionXion
деление программы на подпрограммы, которые могут выполняться одновременно
Xion
“ожидание” для меня новое понятие
Дело в том, что на одном процессоре (в современном понимании на одном ядре процессора) одновременно несколько задач выполняться не может физически. Потоки фактически делят процессорное время на небольшие отрезки и выполняются последовательно и не имеет значения, чем они в это время заняты, может быть поток не делает вообще ничего полезного. Пока один поток выполняется, остальные, естественно, ожидают. Кроме того, в питоне есть глобальный блокировщик интерпретатора (GIL) который скорее всего сведет на нет все ваши попытки ускорить выполнение программы разделив её на потоки. В отличие от потоков асинхронное выполнение кода подразумевает, что подпрограммы выполняют только полезную работу и переключение между ними осуществляется в момент, когда подпрограмма начинает ожидать некоего внешнего воздействия. Таким образом добиваются эффективного использования процессора и кажущейся параллельности выполнения задач. Если интересует эта тема, почитайте книгу Twisted Network Programming Essentials, там популярно объясняют что к чему и зачем.