Dalam multiprosesing Anda memanfaatkan banyak CPU untuk mendistribusikan perhitungan Anda. Karena masing-masing CPU berjalan secara paralel, Anda secara efektif dapat menjalankan banyak tugas secara bersamaan. Anda ingin menggunakan multiprocessing untuk CPU-terikat tugas tugas yang . Contohnya adalah mencoba menghitung jumlah semua elemen dari daftar besar. Jika mesin Anda memiliki 8 inti, Anda dapat "memotong" daftar menjadi 8 daftar yang lebih kecil dan menghitung jumlah masing-masing daftar tersebut secara terpisah pada inti terpisah dan kemudian menjumlahkan angka-angka itu. Anda akan mendapatkan kecepatan ~ 8x dengan melakukan itu.
Dalam - penggunaan threading. threadingAnda tidak membutuhkan banyak CPU. Bayangkan sebuah program yang mengirimkan banyak permintaan HTTP ke web. Jika Anda menggunakan program single-threaded, itu akan menghentikan eksekusi (blok) di setiap permintaan, menunggu respons, dan kemudian melanjutkan setelah menerima respons. Masalahnya di sini adalah bahwa CPU Anda tidak benar-benar berfungsi sambil menunggu server eksternal melakukan pekerjaan itu; itu sebenarnya bisa melakukan beberapa pekerjaan berguna untuk sementara waktu! Cara mengatasinya adalah dengan menggunakan utas - Anda dapat membuat banyak utas, masing-masing bertanggung jawab untuk meminta beberapa konten dari web. Hal yang menyenangkan tentang utas adalah, meskipun mereka berjalan pada satu CPU, CPU dari waktu ke waktu "membekukan" eksekusi satu utas dan melompat untuk mengeksekusi utas lainnya (ini disebut pengalihan konteks dan itu terjadi terus-menerus pada non-deterministik interval).
asyncio pada dasarnya adalah threading di mana bukan CPU tetapi Anda, sebagai programmer (atau sebenarnya aplikasi Anda), memutuskan di mana dan kapan peralihan konteks terjadi . Di Python, Anda menggunakanawait
kata kunci untuk menangguhkan eksekusi coroutine Anda (ditentukan menggunakan async
kata kunci).