threadingモジュールは複数のスレッドを生成することで同時実行を実装し、multiprocessingモジュールはシステムプロセスを使用して同時実行を実装します。これに対して、asyncioは、アプリケーションの一部が協力して最適なタイミングでタスクを明示的に切り替えるシングルスレッドのシングルプロセスアプローチを使用します。 ほとんどの場合、このコンテキストスイッチングは、プログラムがデータの読み取りまたは書き込みの待機をブロックするときに発生しますが、asyncioには、システム信号を処理するために、あるコルーチンが別のコルーチンの完了を待機できるように、また、アプリケーションが作業内容を変更する理由となる可能性のある他のイベントを認識するために、特定の将来の時間に実行されるコードのスケジューリングのサポートも含まれています。