Intipati pengaturcaraan tak segerak
Penyegerakan tradisional Pengaturcaraanmodel menyekat aliran pelaksanaan aplikasi sehingga operasi selesai. Ini tidak cekap semasa mengendalikan tugas intensif I/O kerana aplikasi mesti menunggu operasi ini selesai, mengakibatkan kependaman dan sumber terbuang.
Pengaturcaraan tak segerak mengatasi had ini dengan menggunakan coroutine. Coroutine ialah fungsi ringan yang boleh dijeda dan disambung semula pada bila-bila masa. Apabila coroutine menghadapi operasi menyekat (seperti permintaan rangkaian), ia boleh menjeda pelaksanaan dan membiarkan aplikasi mengendalikan tugas lain. Apabila operasi menyekat selesai, coroutine boleh menyambung semula pelaksanaan dan meneruskan di tempat ia berhenti.
perpustakaan asyncio
asyncio ialah perpustakaan pengaturcaraan tak segerak untuk python yang menyediakan set komprehensif alat untuk menulis aplikasi concurrency berprestasi tinggi. Ia berdasarkan coroutine dan gelung peristiwa, membolehkan pembangun melakukan operasi tak segerak tanpa menyekat benang utama.
Coroutine
Dalam asyncio, coroutine ialah fungsi yang diisytiharkan menggunakan kata kunci async def
关键字声明的函数。它们具有 aw<strong class="keylink">ai</strong>t
. Mereka mempunyai ungkapan aw
t yang menjeda pelaksanaan dan menunggu operasi tak segerak dalam coroutine selesai. Contohnya: fetch_data
是一个协程,它使用 aiohttp
async def fetch_data(url): async with aioHttp.ClientSession() as session: async with session.get(url) as response: return await response.JSON()
mengambil data secara tidak segerak pada URL yang diberikan.
Gelung Acaraasyncio bergantung pada gelung acara untuk mengurus pelaksanaan coroutine. Gelung peristiwa ialah gelung tak terhingga yang bermula dengan coroutine dan terus melaksanakan coroutine sehingga mereka selesai atau dijeda. Ia bertanggungjawab untuk menjadualkan coroutine dan mengendalikan acara daripada
sistem pengendalianatau sumber lain.
Gunakan asyncioasyncio.new_event_loop()
Buat gelung acara: async def
Buat coroutine: asyncio.create_task()
或 asyncio.ensure_future()
Menjadualkan coroutine: asyncio.run()
Mulakan gelung acara: Contoh:
import asyncio
async def main():
# 异步获取数据
data = await fetch_data("https://example.com/data.json")
# 处理数据
print(data)
# 创建事件循环并启动它
asyncio.run(main())
Kesimpulan
asyncio ialah perpustakaan pengaturcaraan tak segerak yang berkuasa dalam
Python🎜 yang membolehkan pembangun menulis aplikasi berprestasi tinggi dan berskala. Dengan memanfaatkan coroutine dan gelung peristiwa, asyncio membenarkan pembangun melakukan operasi serentak tanpa menyekat, dengan itu meningkatkan responsif aplikasi, pemprosesan dan penggunaan sumber. 🎜Atas ialah kandungan terperinci Temui kuasa asyncio: mendayakan operasi tak segerak yang lancar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!