Pengaturcaraan tradisional menggunakan penyekatan I/O, yang bermaksud program menunggu operasi selesai sebelum meneruskan. Ini mungkin berfungsi dengan baik untuk satu tugasan, tetapi mungkin menyebabkan program menjadi perlahan apabila memproses sejumlah besar tugas.
Pengaturcaraan tak segerak mematahkan batasan I/O penyekat tradisional Ia menggunakan I/O bukan penyekat, yang bermaksud program boleh mengagihkan tugas kepada benang atau gelung acara yang berbeza untuk dilaksanakan tanpa menunggu tugasan selesai. Ini membolehkan program mengendalikan berbilang tugas secara serentak, meningkatkan prestasi dan kecekapan program.
PythonAsas pengaturcaraan tak segerak ialah coroutine dan gelung acara. Coroutine ialah fungsi yang membenarkan fungsi bertukar antara menggantung dan menyambung semula. Gelung acara bertanggungjawab untuk menjadualkan coroutine supaya dapat dilaksanakan secara serentak.
Dalam Python, anda boleh menggunakan dua kata kunci async
dan aw
t untuk menulis kod tak segerak. Kata kunci async
digunakan untuk mentakrifkan fungsi tak segerak, manakala kata kunci menunggu
digunakan untuk menjeda fungsi sehingga operasi selesai. async
和aw<strong class="keylink">ai</strong>t
两个关键字来编写异步代码。async
关键字用于定义异步函数,而await
rangkaian:
import asyncio async def fetch_url(url): async with aioHttp.ClientSession() as session: async with session.get(url) as response: return await response.text() async def main(): tasks = [fetch_url(url) for url in urls] responses = await asyncio.gather(*tasks) for response in responses: print(response) if __name__ == "__main__": asyncio.run(main())
untuk melaksanakan berbilang permintaan rangkaian secara serentak. Dengan cara ini, kami boleh memproses berbilang permintaan rangkaian secara selari dan meningkatkan prestasi dan kecekapan program. fetch_url
来执行网络请求,然后在一个事件循环中使用asyncio.gather
Atas ialah kandungan terperinci Pengaturcaraan asynchronous Python: Satu cara untuk mencapai concurrency yang cekap dalam kod asynchronous. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!