Pengaturcaraan Serentak dan Tak Segerak
. asyncio ialah perpustakaan untuk pengaturcaraan tak segerak dalam python, yang membenarkan atur cara melaksanakan operasi I/O tanpa menyekat utas utama. Gelung Acara Inti asyncio ialah gelung acara, yang memantau acara I/O dan menjadualkan tugasan yang sepadan. Apabila coroutine sedia, gelung acara melaksanakannya sehingga ia menunggu operasi I/O. Ia kemudian menjeda coroutine dan terus melaksanakan coroutine lain.
Coroutine
Coroutine ialah fungsi yang boleh menjeda dan menyambung semula pelaksanaan. kata kunci async def digunakan untuk membuat coroutine. Coroutine menggunakan kata kunci await untuk menunggu operasi I/O selesai.
Asas asyncio
Kod berikut menunjukkan asas asyncio:
import asyncio async def main(): # 使用 asyncio.sleep() 模拟 I/O 操作 await asyncio.sleep(1) print("Hello, world!") asyncio.run(main())
Misi
Tugas ialah unit bebas pelaksanaan selari dalam asyncio. Fungsi asyncio.create_task() digunakan untuk mencipta tugas.
Kolam Coroutine
Kolam coroutine ialah kumpulan coroutine yang dilaksanakan secara serentak oleh gelung acara. Fungsi asyncio.gather() digunakan untuk mencipta kumpulan coroutine, yang mengembalikan coroutine yang mengumpulkan hasil semua coroutine.
Pemprosesan isyarat
asyncio menyokong menggunakan fungsi asyncio.ensure_future() untuk memproses isyarat. Ini membolehkan coroutine dilaksanakan dalam pengendali isyarat.
Batalkan protokol
Coroutines boleh dibatalkan dengan memanggil kaedah asyncio.Task.cancel(). Coroutine yang dibatalkan akan menimbulkan pengecualian asyncio.CancelledError.
Kemahiran nyahpepijat
Gunakan asyncio.get_event_loop() untuk mendapatkan gelung acara
Gunakan asyncio.gather() untuk menjejaki pelaksanaan coroutine
Gunakan asyncio.create_task_group() untuk mencipta kumpulan coroutine dan menjejaki statusnya
Amalan Terbaik
Kendalikan isyarat dan pengecualian dengan betul Pantau dan
OptimumkanAtas ialah kandungan terperinci Panduan Lanjutan untuk Python asyncio: Dari Pemula kepada Pakar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!