Rumah > pembangunan bahagian belakang > Tutorial Python > Pengaturcaraan asynchronous Python: mudah dikuasai, meningkatkan prestasi program

Pengaturcaraan asynchronous Python: mudah dikuasai, meningkatkan prestasi program

WBOY
Lepaskan: 2024-02-26 09:25:18
ke hadapan
442 orang telah melayarinya

Python异步编程: 轻松掌握, 提升程序性能

  1. Asas pengaturcaraan tak segerak

Asynchronous Programming ialah paradigma pengaturcaraan yang membolehkan program melaksanakan tugas lain sementara menunggu operasi I/O (seperti rangkaianpermintaan, membaca dan menulis fail, dsb.), dengan itu meningkatkan daya pemprosesan dan kelajuan tindak balas program. Dalam pengaturcaraan segerak tradisional, program perlu menunggu operasi I/O selesai sebelum meneruskan. Ini menyebabkan program disekat semasa menunggu operasi I/O, seterusnya mengurangkan prestasi program.

Dalam pengaturcaraan tak segerak, program boleh menyerahkan operasi I/O kepada gelung peristiwa (gelung peristiwa) untuk diproses, dan kemudian terus melaksanakan tugas lain. Apabila operasi I/O selesai, gelung acara akan memberitahu program, dan program kemudiannya boleh melakukan pemprosesan yang sepadan.

  1. Coroutine

Coroutine ialah konsep asas dalam pengaturcaraan tak segerak Ia adalah fungsi yang boleh menjeda dan menyambung semula pelaksanaan. Dalam python, coroutine boleh ditakrifkan menggunakan kata kunci async def.

Berikut ialah contoh coroutine mudah:

async def coroutine_example():
print("协程开始执行")
await asyncio.sleep(1)# 暂停1秒
print("协程继续执行")
Salin selepas log masuk

Coroutine ini boleh dilaksanakan oleh gelung acara. Apabila panggilan coroutine menunggu asyncio.sleep(1), ia menjeda pelaksanaan selama 1 saat. Pada masa ini, gelung acara boleh melaksanakan tugas lain. Apabila 1 saat berlalu, coroutine akan terus melaksanakan.

  1. Gelung Acara

Gelung acara ialah komponen teras pengaturcaraan tak segerak Ia bertanggungjawab untuk menjadualkan dan melaksanakan coroutine. Dalam Python, anda boleh menggunakan kaedah asyncio.get_event_loop() untuk mendapatkan gelung peristiwa semasa.

Kod berikut menunjukkan cara menggunakan gelung acara untuk melaksanakan coroutine:

import asyncio

async def coroutine_example():
print("协程开始执行")
await asyncio.sleep(1)# 暂停1秒
print("协程继续执行")

loop = asyncio.get_event_loop()
loop.run_until_complete(coroutine_example())
loop.close()
Salin selepas log masuk

Kod ini mula-mula mencipta coroutine coroutine_example(), dan kemudian menggunakan gelung acara untuk melaksanakannya. Kaedah loop.run_until_complete(coroutine_example()) akan menunggu coroutine coroutine_example() selesai sebelum meneruskan.

  1. aiohttp

aioHttp ialah perpustakaan HTTP tak segerak Python yang popular yang boleh digunakan untuk membina aplikasi web tak segerak. aiohttp boleh dipasang menggunakan arahan pip:

pip install aiohttp
Salin selepas log masuk

Berikut ialah contoh aplikasi web tak segerak aiohttp yang mudah:

import aiohttp

async def main():
async with aiohttp.ClientSession() as session:
async with session.get("https://example.com") as response:
print(response.status)

if __name__ == "__main__":
asyncio.run(main())
Salin selepas log masuk

Kod ini mula-mula mencipta sesi klien aiohttp, dan kemudian menggunakan kaedah session.get() untuk menghantar permintaan GET ke https://example.com. Apabila respons kembali, program akan mencetak kod status respons.

  1. Ringkasan

Python asynchronous programming ialah teknologi yang boleh meningkatkan prestasi program dengan ketara. Ia membolehkan atur cara melaksanakan tugasan lain sementara menunggu operasi I/O, sekali gus meningkatkan daya pemprosesan dan kelajuan tindak balas program. Artikel ini memperkenalkan asas pengaturcaraan tak segerak dalam Python dan menunjukkan cara menggunakan perpustakaan asyncio untuk melaksanakan pengaturcaraan tak segerak melalui kod demonstrasi.

Atas ialah kandungan terperinci Pengaturcaraan asynchronous Python: mudah dikuasai, meningkatkan prestasi program. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:lsjlt.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan