Pengaturcaraan tak segerak ialah paradigma pengaturcaraan yang membolehkan program melaksanakan pelbagai tugas secara serentak tanpa menyekat. Tidak seperti pengaturcaraan segerak tradisional, dalam pengaturcaraan tak segerak, apabila tugasan perlu menunggu tugasan lain selesai, ia tidak akan disekat, tetapi boleh terus melaksanakan tugas lain. Dengan cara ini, program boleh mengendalikan berbilang tugas serentak, dengan itu meningkatkan prestasi keseluruhan program.
Pengaturcaraan tak segerak dalamPython 3.4 dan lebih tinggi menyokong pengaturcaraan tak segerak. Pengaturcaraan tak segerak dilaksanakan terutamanya dalam Python melalui coroutine dan modul asyncio. Coroutine ialah fungsi khas dalam Python yang membenarkan program menjeda dan menyambung semula pelaksanaan tanpa menyekat. Modul asyncio ialah rangka kerja tak segerak dalam Python Ia menyediakan pelbagai alat dan api untuk membolehkan pembangun menulis program tak segerak.
Modul asyncio menyediakan pelbagai primitif pengaturcaraan tak segerak, termasuk coroutine, gelung acara, tugasan dan masa hadapan. Penggunaan asas asyncio diperkenalkan di bawah.
Coroutine ialah bahan binaan asas dalam asyncio. Coroutine ialah fungsi khas dalam Python yang boleh digantung dan disambung semula. Coroutines diisytiharkan dengan kata kunci async def
, contohnya:
async def hello_world(): print("Hello, world!")
Gelung acara ialah komponen teras asyncio. Gelung peristiwa ialah gelung berjalan berterusan yang bertanggungjawab untuk menjadualkan pelaksanaan coroutine. Apabila coroutine perlu menunggu tugas lain selesai, ia digantung sementara gelung acara terus melaksanakan coroutine lain. Apabila tugasan lain selesai, gelung acara akan menyambung semula pelaksanaan coroutine yang digantung.
Tasks ialah abstraksi yang digunakan dalam asyncio untuk mengurus coroutine. Tugasan boleh dibuat, dimulakan, dibatalkan dan ditunggu. Tugasan boleh dibuat melalui fungsi asyncio.create_task()
, contohnya:
task = asyncio.create_task(hello_world())
Masa hadapan ialah abstraksi dalam asyncio untuk mewakili hasil operasi tak segerak. Niaga hadapan boleh ditunggu untuk mendapatkan keputusan operasi tak segerak. Masa depan boleh dicipta melalui fungsi asyncio.Future()
, contohnya:
future = asyncio.Future()
Selain coroutine, gelung acara, tugasan dan niaga hadapan, asyncio juga menyediakan banyak penggunaan lanjutan lain, termasuk kawalan serentak, tamat masa, pembatalan dan pengendalian pengecualian. Penggunaan lanjutan ini boleh membantu pembangun menulis program tak segerak yang lebih mantap dan cekap.
Pengaturcaraan tak segerak mempunyai kelebihan berikut:
Pengaturcaraan tak segerak juga mempunyai beberapa kelemahan:
Pengaturcaraan tak segerak ialah kaedah pengaturcaraan yang berkesan yang boleh meningkatkan prestasi program, kebolehskalaan dan kebolehbacaan kod. Pengaturcaraan tak segerak dalam Python boleh dicapai melalui coroutine dan modul asyncio. Modul asyncio menyediakan API yang kaya yang membolehkan pembangun menulis program tak segerak dengan mudah.
Atas ialah kandungan terperinci Pengaturcaraan tak segerak Python: Mendedahkan rahsia pengaturcaraan tak segerak, dari kemasukan kepada penguasaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!