Cara asyncio Berfungsi
Pengaturcaraan tak segerak membolehkan atur cara untuk terus berjalan tanpa menunggu operasi input atau output (I/O) selesai, sekali gus meningkatkan prestasi dan responsif. Satu perpustakaan Python popular yang melaksanakan pengaturcaraan tak segerak ialah asyncio.
Asas
Sebelum mendalami cara kerja asyncio, mari kita pertimbangkan beberapa konsep asas:
-
Penjana: Penjana ialah objek Python yang menghasilkan nilai, membenarkan pelaksanaannya dijeda dan disambung semula.
-
Coroutine: Coroutine ialah penjana tak segerak yang dibuat menggunakan kata kunci async def. Mereka menjeda dan menyambung semula pelaksanaan menggunakan kata kunci menunggu.
Asyncio Architecture
Pada terasnya, asyncio melibatkan tiga komponen utama:
-
Tugas: Ini merangkum coroutine dan berkomunikasi dengan mereka.
-
Masa Hadapan: Ini menyimpan keputusan atau pengecualian operasi tak segerak dan memberitahu tugasan apabila ia tersedia.
-
Gelung Acara: Jadual ini dan menjalankan tugas, memacu tak segerak pelaksanaan.
Implementasi I/O
I/O tak segerak dalam asyncio dicapai melalui gelung peristiwa dan fungsi pilih(). Pilih soket monitor untuk ketersediaan data atau kesediaan untuk menulis.
- Apabila operasi I/O dilakukan, asyncio menilai sama ada data boleh diproses serta-merta.
- Jika soket memerlukan tindakan lanjut , asyncio mendaftarkannya dengan select() dan mencipta masa depan untuknya.
- Tugas yang menunggu masa hadapan ini dijeda pelaksanaan.
- Gelung peristiwa memanggil select(), yang menunggu acara soket.
- Jika peristiwa berlaku, masa hadapan yang sepadan ditetapkan untuk dilakukan, menandakan ketersediaan data.
- Tugas yang berkaitan bangun dan menyambung semula coroutine, yang kemudiannya membaca atau menulis data.
Lebih Besar Gambar
Pengaturcaraan tak segerak dengan asyncio membenarkan gelung acara mengendalikan operasi I/O sementara tugas lain terus berjalan serentak. Ini menghasilkan program yang responsif dan cekap yang menggunakan sumber yang tersedia secara optimum, terutamanya dalam aplikasi yang melibatkan banyak operasi I/O atau tugasan yang berjalan lama.
Atas ialah kandungan terperinci Bagaimanakah asyncio Mencapai Pengaturcaraan Asynchronous dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!