آموزش برنامه نویسی واکنش گرا در همزمانی در پایتون

3 سال پیش

آموزش برنامه نویسی واکنش گرا در همزمانی در پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش برنامه نویسی واکنش گرا در همزمانی در پایتون خواهیم پرداخت.

برنامه نویسی واکنش گرا یک الگوی برنامه نویسی است که با جریان داده ها و انتشار تغییر سرو کار دارد. این بدان معناست که وقتی جریان داده ای توسط یک مولفه شروع می شود، تغییر توسط کتابخانه برنامه نویسی واکنش پذیر به سایر مولفه ها منتقل می شود. انتشار تغییر تا رسیدن به گیرنده نهایی ادامه خواهد یافت. تفاوت بین برنامه نویسی رویداد محور و واکنش گرا این است که برنامه نویسی رویداد محور حول حوادث و برنامه نویسی واکنش گرا حول داده می چرخد.

ReactiveX یا RX برای برنامه نویسی واکنش گرا

ReactiveX یا Raective Extension مشهورترین اجرای برنامه نویسی واکنش گرا است. عملکرد ReactiveX به دو کلاس زیر بستگی دارد –

کلاس قابل مشاهده

این کلاس منبع جریان داده یا رویدادهاست و داده های ورودی را بسته بندی می کند تا داده ها از یک موضوع به موضوع دیگر منتقل شوند. تا زمانی که برخی از ناظران در آن مشترک نشوند، داده نمی دهد.

کلاس ناظر

این کلاس جریان داده منتشر شده توسط قابل مشاهده را مصرف می کند. چندین مشاهده گر  وجود دارد و هر مشاهده کننده هر مورد داده ای را که ساطع می شود دریافت می کند. مشاهدهگر می تواند سه نوع رویداد را با اشتراک در قابل مشاهده دریافت کند –

  • ()on_next  – این بدان معنی است که عنصری در جریان داده وجود دارد.
  • ()on_completed  – این به معنای پایان انتشار است و دیگر مواردی در دسترس نیست.
  • ()on_error – این همچنین به معنی پایان انتشار است اما در مواردی که یک خطا توسط مشاهده مشاهده می شود.

 

RxPY – ماژول پایتون برای برنامه نویسی واکنش گرا

RxPY یک ماژول پایتون است که می تواند برای برنامه نویسی واکنش گرا استفاده شود. ما باید اطمینان حاصل کنیم که ماژول نصب شده است. از دستور زیر می توان برای نصب ماژول RxPY استفاده کرد –

pip install RxPY

 

مثال

در زیر یک اسکریپت پایتون آورده شده است که از ماژول RxPY و کلاسهای آن برای برنامه نویسی واکنش پذیر و Observable و Observe استفاده می کند. در اصل دو کلاس وجود دارد –

  • ()get_strings  – برای گرفتن رشته ها از ناظر.
  • ()PrintObserver – برای چاپ رشته ها از ناظر. از هر سه رویداد کلاس ناظر استفاده می کند. همچنین از کلاس ()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())

 

خروجی

 

Received Ram
Received Mohan
Received Shyam
Finished

 

کتابخانه PyFunctional برای برنامه نویسی واکنش گرا

PyFunctional یک کتابخانه پایتون دیگر است که می تواند برای برنامه نویسی واکنش گرا استفاده شود. این برنامه ما را قادر می سازد تا با استفاده از زبان برنامه نویسی پایتون برنامه های کاربردی ایجاد کنیم.

تفاوت بین RxPY و PyFunctional

هر دو کتابخانه برای برنامه نویسی واکنشی استفاده می شوند و جریان را به روشی مشابه مدیریت می کنند اما تفاوت اصلی بین هر دو به مدیریت داده ها بستگی دارد. RxPY داده ها و رویدادها را در سیستم مدیریت می کند در حالی که PyFunctional بر تغییر داده با استفاده از پارادایم های برنامه نویسی کاربردی متمرکز است.

نصب ماژول PyFunctional

قبل از استفاده از این ماژول باید آن را نصب کنیم. با کمک دستور pip به صورت زیر قابل نصب است –

pip install pyfunctional

 

مثال

مثال زیر از ماژول PyFunctional و کلاس seq آن استفاده می کند که به عنوان شی جریان عمل می کند که می توانیم با آن تکرار و دستکاری کنیم. در این برنامه ، با استفاده از تابع lamda که هر مقداری را دو برابر می کند ، توالی را ترسیم می کند ، سپس مقداری را که x بزرگتر از ۴ است فیلتر می کند و در آخر توالی را به جمع تمام مقادیر باقی مانده کاهش می دهد.

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))

 

خروجی

Result: 6

 

منبع.

لیست جلسات قبل آموزش همزبانی در پایتون

  1. آموزش همزمانی در برنامه نویسی پایتون
  2. آموزش همزمانی در برنامه نویسی پایتون _ مقدمه
  3. آموزش معماری سیستم و حافظه در برنامه نویسی پایتون
  4.  آموزش رشته ها در همزمانی پایتون 
  5. آموزش پیاده سازی رشته در همزمانی پایتون
  6. آموزش همگام سازی رشته ها در همزمانی پایتون
  7. آموزش ارتباط رشته ها در همزمانی پایتون
  8. آموزش تست برنامه های رشته در همزمانی پایتون
  9. اشکال زدایی از برنامه های رشته در همزمانی پایتون
  10. آموزش بنچ مارکینگ و پروفایل در همزمانی پایتون
  11. آموزش مجموعه رشته ها در همزمانی در پایتون 
  12.  آموزش مجموعه مراحل در همزمانی در پایتون
  13. آموزش پردازش چندگانه در همزمانی در پایتون 
  14. آموزش ارتباط بین پردازشی در همربانی در پایتون
  15. آموزش برنامه نویسی مبتنی بر رویداد در همزمانی در پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه