Pemrosesan Asinkron di Python

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_hello didefinisikan sebagai tugas asinkron. Saat menunggu selama 1 detik dengan sleep(), 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, task1 dan task2 dijalankan secara bersamaan. Sebagai hasilnya, task2 selesai 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-except dan pesan kesalahannya dapat ditangani dengan aman. Pengecualian dari faulty_task ditangkap di dalam main dan 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.

YouTube Video