Pemrosesan Asinkron di Python
Artikel ini menjelaskan pemrosesan asinkron di Python.
Anda dapat mempelajari contoh kode untuk penggunaan dasar async/await Python dan modul asyncio.
YouTube Video
Pemrosesan Asinkron di Python
Pemrosesan asinkron di Python adalah mekanisme untuk menangani operasi I/O yang memakan waktu, seperti membaca dan menulis file atau komunikasi jaringan, secara efisien. Dalam pemrosesan sinkron, operasi berikutnya menunggu hingga operasi saat ini selesai, tetapi dengan pemrosesan asinkron, Anda dapat melanjutkan tugas lain selama waktu menunggu. Di Python, modul asyncio disediakan untuk melakukan pemrosesan asinkron. Di sini, kami akan menjelaskan elemen dasarnya dan cara menggunakannya secara bertahap.
Sintaks Dasar
Di inti pemrosesan asinkron terdapat fungsi yang disebut coroutine. Fungsi async mendefinisikan fungsi asinkron, dan await digunakan untuk menunggu tugas asinkron di dalam fungsi tersebut.
1import asyncio
2
3async def say_hello():
4 print("Hello")
5 await asyncio.sleep(1)
6 print("World")
7
8if __name__ == "__main__":
9 # Execute asynchronous task
10 asyncio.run(say_hello())- Pada kode di atas, fungsi
say_hellodidefinisikan sebagai tugas asinkron. Saat menunggu selama 1 detik dengansleep(), tugas asinkron lainnya dapat dijalankan.
Menjalankan Banyak Tugas
Dengan menggunakan fungsi gather dari modul asyncio, Anda dapat menjalankan beberapa tugas secara bersamaan.
1import asyncio
2
3async def task1():
4 print("Task 1 started")
5 await asyncio.sleep(2)
6 print("Task 1 completed")
7
8async def task2():
9 print("Task 2 started")
10 await asyncio.sleep(1)
11 print("Task 2 completed")
12
13async def main():
14 await asyncio.gather(task1(), task2())
15
16if __name__ == "__main__":
17 asyncio.run(main())- Dalam contoh ini,
task1dantask2dijalankan secara bersamaan. Sebagai hasilnya,task2selesai lebih dahulu dari dua tugas tersebut, tetapi waktu eksekusi total sama dengan waktu eksekusi tugas terpanjang.
Penanganan Kesalahan
Penanganan kesalahan tetap penting bahkan dalam pemrosesan asinkron. Anda dapat menangkap dan menangani kesalahan menggunakan sintaks standar try-except.
1import asyncio
2
3async def faulty_task():
4 raise Exception("An error occurred")
5
6async def main():
7 try:
8 await faulty_task()
9 except Exception as e:
10 print(f"Caught an error: {e}")
11
12if __name__ == "__main__":
13 asyncio.run(main())- Kode ini menunjukkan bagaimana pengecualian yang terjadi di dalam fungsi asinkron dapat ditangkap dengan
try-exceptdan pesan kesalahannya dapat ditangani dengan aman. Pengecualian darifaulty_taskditangkap di dalammaindan dikeluarkan dengan semestinya.
Ringkasan
Pemrosesan asinkron di Python menggunakan async / await dan asyncio untuk menjalankan tugas lain secara bersamaan saat menunggu I/O, sehingga memungkinkan pemrosesan yang efisien. Dengan memanfaatkan eksekusi bersamaan dari beberapa tugas dan I/O asinkron, Anda dapat meningkatkan kinerja secara signifikan. Selain itu, karena Anda dapat menangani kesalahan seperti pada penggunaan try-except biasa, Anda dapat menjalankan kode asinkron dengan aman.
Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.