Python

Tutorial Python Asyncio

Tutorial Python Asyncio
Pustaka Asyncio diperkenalkan di python 3.4 untuk menjalankan program bersamaan dengan utas tunggal. Pustaka ini lebih populer daripada pustaka dan kerangka kerja lain karena kecepatannya yang mengesankan dan berbagai kegunaannya. Pustaka ini digunakan dalam python untuk membuat, menjalankan, dan menyusun coroutine dan menangani banyak tugas secara bersamaan tanpa melakukan tugas secara paralel. Bagian utama dari perpustakaan ini didefinisikan di bawah ini:

Coroutine: Bagian kode yang dapat dijeda dan dilanjutkan dalam skrip multi-utas disebut coroutine. coroutine bekerja sama dalam program multi-utas. Ketika satu coroutine berhenti maka coroutine lainnya dapat mengeksekusi.

Lingkaran acara: Ini digunakan untuk memulai eksekusi coroutine dan menangani operasi input/output. Dibutuhkan banyak tugas dan menyelesaikannya.

Tugas: Eksekusi dan hasil coroutine ditentukan oleh tugas. Anda dapat menetapkan beberapa tugas menggunakan pustaka asyncio dan menjalankan tugas secara asinkron.

Masa depan: Ini bertindak sebagai penyimpanan masa depan di mana hasil coroutine akan disimpan setelah selesai. Ini berguna ketika ada coroutine yang harus menunggu hasil coroutine lainnya.

Bagaimana Anda dapat menerapkan konsep perpustakaan asyncio di atas ditunjukkan dalam tutorial ini dengan menggunakan beberapa contoh sederhana.

Contoh-1: Buat Coroutine tunggal dengan satu tugas

Buat file bernama asinkron1.py dan tambahkan kode berikut. perpustakaan asyncio diimpor untuk menggunakan fungsi perpustakaan ini. Menambahkan fungsi dideklarasikan untuk menghitung jumlah rentang angka tertentu. Rentang angka dari 1 hingga 101 ditetapkan oleh tugas dengan penundaan satu detik. Loop acara dideklarasikan bahwa itu akan berjalan sampai semua tugas metode utama selesai. Setelah menghitung nilainya, fungsi akan menunggu selama satu detik dan mencetak hasilnya.

impor asyncio
async def add (mulai, akhir, tunggu):
#Inisialisasi jumlah variabel
jumlah = 0
#Hitung jumlah semua angka
untuk n dalam rentang (mulai, akhir):
jumlah += n
#Tunggu detik yang ditentukan
tunggu asyncio.tidur (tunggu)
#Cetak hasilnya
print(f'Jumlah dari start ke end adalah sum')
async def main():
#Menetapkan satu tugas
tugas = putaran.buat_tugas(tambahkan(1,101,1))
#Jalankan tugas secara tidak sinkron
tunggu asyncio.tunggu([tugas])
jika __name__ == '__main__':
#Deklarasikan loop acara
loop = tidak sinkron.get_event_loop()
#Jalankan kode sampai menyelesaikan semua tugas
lingkaran.jalankan_sampai_lengkap(utama())
#Tutup loop
lingkaran.Menutup()

Keluaran:

$ python3 async1.py

Output menunjukkan jumlah 1 hingga 101 yaitu 5050.

Contoh-2: Buat Beberapa coroutine

Penggunaan perpustakaan asyncio akan dihapus ketika Anda menjalankan beberapa coroutine secara bersamaan. Buat file baru bernama async2.py dan tambahkan kode berikut. Tiga tugas dihasilkan dengan tiga rentang berbeda dan nilai tunggu di utama() metode. Tugas pertama akan menghitung jumlah dari 5 hingga 500.000 dengan menunggu 3 detik, tugas kedua akan menghitung jumlah dari 2 hingga 300.000 dengan menunggu 2 detik dan tugas ketiga akan menghitung jumlah dari 10 hingga 1000 dengan menunggu 1 detik. Tugas dengan nilai menunggu yang rendah akan selesai pada awalnya dan tugas dengan nilai menunggu yang tinggi akan selesai pada akhirnya.

impor asyncio
async def add (mulai, akhir, tunggu):
#Inisialisasi jumlah variabel
jumlah = 0
#Hitung jumlah semua angka
untuk n dalam rentang (mulai, akhir):
jumlah += n
#Tunggu detik yang ditentukan
tunggu asyncio.tidur (tunggu)
#Cetak hasilnya
print(f'Jumlah dari mulai ke akhir adalah jumlah')
async def main():
#Tugaskan tugas pertama
tugas1=loop.buat_tugas(tambahkan(5,500000,3))
#Tugaskan tugas kedua
tugas2=loop.buat_tugas(tambahkan(2,300000,2))
#Tugaskan tugas ketiga
tugas3=loop.buat_tugas(tambah (10,1000,1))
#Jalankan tugas secara tidak sinkron
tunggu asyncio.tunggu([tugas1,tugas2,tugas3])
jika __name__ == '__main__':
#Deklarasikan loop acara
loop = tidak sinkron.get_event_loop()
#Jalankan kode sampai menyelesaikan semua tugas
lingkaran.jalankan_sampai_lengkap(utama())
#Tutup loop
lingkaran.Menutup()

Keluaran:

$ python3 async1.py

Outputnya menunjukkan bahwa tugas3 selesai lebih dulu karena waktu tunggu tugas ini hanya 1 detik dan tugas1 selesai terakhir karena waktu tunggu tugas ini adalah 3 detik.

Contoh-3: coroutine dengan masa depan

Contoh ini menunjukkan penggunaan objek perpustakaan asyncio di masa mendatang. Buat file baru bernama async3.py dan tambahkan kode berikut. Dua tugas ditugaskan untuk masa depan dalam contoh ini. tunjukkan pesan fungsi dideklarasikan di sini untuk mencetak pesan sebelum menjalankan coroutine dan setelah menyelesaikan eksekusi. Tugas pertama akan menunggu selama 2 detik dan selesai terakhir. Tugas kedua akan menunggu selama 1 detik dan selesai terlebih dahulu.

impor asyncio
async def show_message(nomor,tunggu):
#Cetak pesan
print(f'Tugas number sedang berjalan')
#Tunggu detik yang ditentukan
tunggu asyncio.tidur (tunggu)
print(f'Tugas angka selesai')
async def stop_after(kapan):
tunggu asyncio.tidur (kapan)
lingkaran.berhenti()
async def main():
#Tugaskan tugas pertama
tugas1=asincio.pastikan_masa depan(show_message(1,2))
print('Jadwal 1')
#Tugaskan tugas kedua
task2=asyncio.pastikan_masa depan(show_message(2,1))
print('Jadwal 2')
#Jalankan tugas secara tidak sinkron
tunggu asyncio.tunggu([tugas1,tugas2])
jika __name__ == '__main__':
#Deklarasikan loop acara
loop = tidak sinkron.get_event_loop()
#Jalankan kode metode utama hingga menyelesaikan semua tugas
lingkaran.jalankan_sampai_lengkap(utama())

Keluaran:

$ python3 async3.py

Ditunjukkan pada output bahwa tugas1 dimulai terlebih dahulu dan diselesaikan terakhir, dan tugas2 dimulai kemudian tetapi diselesaikan terlebih dahulu untuk waktu tunggu yang singkat.

Kesimpulan

Konsep dasar pemrograman asinkron menggunakan pustaka asyncio python dijelaskan di sini. Semoga, Anda dapat menulis kode multi-utas dengan python setelah mempraktikkan contoh-contoh tutorial ini.

Tambahkan gerakan Mouse ke Windows 10 menggunakan alat gratis ini
Dalam beberapa tahun terakhir, komputer dan sistem operasi telah berkembang pesat. Ada saat ketika pengguna harus menggunakan perintah untuk menavigas...
Kontrol & kelola gerakan mouse di antara beberapa monitor di Windows 10
Manajer Mouse Tampilan Ganda memungkinkan Anda mengontrol & mengonfigurasi gerakan mouse di antara beberapa monitor, dengan memperlambat gerakannya di...
WinMouse memungkinkan Anda menyesuaikan & meningkatkan gerakan penunjuk tetikus di PC Windows
Jika Anda ingin meningkatkan fungsi default penunjuk tetikus Anda, gunakan freeware WinMouse. Ini menambahkan lebih banyak fitur untuk membantu Anda m...