Pemrograman Reaktif
Pemrograman reaktif adalah paradigma pemrograman yang berhubungan dengan aliran data dan penyebaran perubahan. Artinya, ketika aliran data dipancarkan oleh satu komponen, perubahan tersebut akan disebarkan ke komponen lain dengan pustaka pemrograman reaktif. Penyebaran perubahan akan berlanjut hingga mencapai penerima akhir. Perbedaan antara pemrograman berbasis peristiwa dan pemrograman reaktif adalah bahwa pemrograman berbasis peristiwa berkisar pada peristiwa dan pemrograman reaktif berputar di sekitar data.
ReactiveX atau RX untuk pemrograman reaktif
ReactiveX atau Raective Extension adalah implementasi paling terkenal dari pemrograman reaktif. Cara kerja ReactiveX bergantung pada dua kelas berikut -
Kelas yang bisa diamati
Kelas ini adalah sumber aliran data atau peristiwa dan mengemas data yang masuk sehingga data dapat diteruskan dari satu utas ke utas lainnya. Ini tidak akan memberikan data sampai beberapa pengamat berlangganan.
Kelas pengamat
Kelas ini menggunakan aliran data yang dipancarkan oleh observable. Bisa ada beberapa pengamat dengan observable dan setiap pengamat akan menerima setiap item data yang dipancarkan. Pengamat dapat menerima tiga jenis peristiwa dengan berlangganan observable -
on_next() event - Ini menyiratkan ada elemen dalam aliran data.
on_completed() event - Ini menyiratkan akhir emisi dan tidak ada lagi item yang datang.
on_error() event - Ini juga menyiratkan akhir emisi tetapi jika terjadi kesalahan observable.
RxPY - Modul Python untuk Pemrograman Reaktif
RxPY adalah modul Python yang dapat digunakan untuk pemrograman reaktif. Kami perlu memastikan bahwa modul telah diinstal. Perintah berikut dapat digunakan untuk menginstal modul RxPY -
pip install RxPY
Contoh
Berikut ini adalah skrip Python, yang menggunakan RxPY modul dan kelasnya Observable dan Observe forpemrograman reaktif. Pada dasarnya ada dua kelas -
get_strings() - untuk mendapatkan string dari pengamat.
PrintObserver()- untuk mencetak string dari pengamat. Ia menggunakan ketiga kejadian kelas pengamat. Ini juga menggunakan kelas subscribe ().
from rx import Observable, Observer
def get_strings(observer):
observer.on_next("Ram")
observer.on_next("Mohan")
observer.on_next("Shyam")
observer.on_completed()
class PrintObserver(Observer):
def on_next(self, value):
print("Received {0}".format(value))
def on_completed(self):
print("Finished")
def on_error(self, error):
print("Error: {0}".format(error))
source = Observable.create(get_strings)
source.subscribe(PrintObserver())
Keluaran
Received Ram
Received Mohan
Received Shyam
Finished
Perpustakaan PyFunctional untuk pemrograman reaktif
PyFunctionaladalah pustaka Python lain yang dapat digunakan untuk pemrograman reaktif. Ini memungkinkan kami untuk membuat program fungsional menggunakan bahasa pemrograman Python. Ini berguna karena memungkinkan kita membuat pipeline data dengan menggunakan operator fungsional yang dirantai.
Perbedaan antara RxPY dan PyFunctional
Kedua pustaka digunakan untuk pemrograman reaktif dan menangani aliran dengan cara yang sama tetapi perbedaan utama antara keduanya bergantung pada penanganan data. RxPY menangani data dan peristiwa di sistem sementara PyFunctional difokuskan pada transformasi data menggunakan paradigma pemrograman fungsional.
Memasang Modul PyFunctional
Kita perlu menginstal modul ini sebelum menggunakannya. Itu dapat diinstal dengan bantuan perintah pip sebagai berikut -
pip install pyfunctional
Contoh
Berikut contoh penggunaan the PyFunctional modul dan nya seqkelas yang bertindak sebagai objek aliran yang dapat kita iterasi dan manipulasi. Dalam program ini, ia memetakan urutan dengan menggunakan fungsi lamda yang menggandakan setiap nilai, kemudian menyaring nilai di mana x lebih besar dari 4 dan akhirnya mengurangi urutan menjadi jumlah dari semua nilai yang tersisa.
from functional import seq
result = seq(1,2,3).map(lambda x: x*2).filter(lambda x: x > 4).reduce(lambda x, y: x + y)
print ("Result: {}".format(result))
Keluaran
Result: 6