পাইপিআই প্যাকেজ
2020 সালের জুন পর্যন্ত, এটি পিপিআইতে ইভেন্ট সম্পর্কিত প্যাকেজগুলি উপলভ্য, সাম্প্রতিক প্রকাশের তারিখ দ্বারা আদেশ করা।
আরো আছে
এটি বিভিন্ন লাইব্রেরি থেকে বেছে নিতে বেছে বেছে খুব আলাদা আলাদা পরিভাষা ব্যবহার করে (ইভেন্টস, সিগন্যাল, হ্যান্ডলার, পদ্ধতি প্রেরণ, হুকস, ...)।
আমি উপরের প্যাকেজগুলির সাথে সংক্ষিপ্ত বিবরণ রাখার চেষ্টা করছি, সাথে সাথে উত্তরগুলিতে বর্ণিত কৌশলগুলি।
প্রথমত, কিছু পরিভাষা ...
পর্যবেক্ষক নিদর্শন
ইভেন্ট সিস্টেমের সর্বাধিক প্রাথমিক স্টাইলটি হ'ল ব্যাগগুলির 'হ্যান্ডলার পদ্ধতিগুলি' যা পর্যবেক্ষক প্যাটার্নটির একটি সাধারণ বাস্তবায়ন ।
মূলত, হ্যান্ডলার পদ্ধতিগুলি (কলযোগ্য) একটি অ্যারেতে সংরক্ষণ করা হয় এবং ইভেন্টটি 'অগ্নিকাণ্ডের' সময় প্রতিটি বলা হয়।
সাবস্ক্রাইব প্রকাশ
পর্যবেক্ষক ইভেন্ট সিস্টেমগুলির অসুবিধাটি হ'ল আপনি কেবল আসল ইভেন্ট অবজেক্টে (বা হ্যান্ডলারের তালিকায়) হ্যান্ডলারের নিবন্ধন করতে পারেন। সুতরাং নিবন্ধকরণের সময় ইভেন্টটি ইতিমধ্যে বিদ্যমান থাকা প্রয়োজন।
এজন্য ইভেন্ট সিস্টেমের দ্বিতীয় স্টাইলটি বিদ্যমান:
প্রকাশ-সাবস্ক্রাইব প্যাটার্ন । এখানে, হ্যান্ডলাররা কোনও ইভেন্ট অবজেক্টে (বা হ্যান্ডলার তালিকায়) নিবন্ধন করে না, তবে কেন্দ্রীয় প্রেরণকারীতে on এছাড়াও বিজ্ঞপ্তিদাতারা কেবল প্রেরকের সাথে কথা বলে। কী শুনতে হবে বা কী প্রকাশ করবেন তা 'সংকেত' দ্বারা নির্ধারিত হয়, যা নাম (স্ট্রিং) ছাড়া আর কিছুই নয়।
মধ্যস্থতাকারী প্যাটার্ন
পাশাপাশি আগ্রহী হতে পারে: মধ্যস্থতার প্যাটার্ন ।
আঙ্গুলসমূহ
একটি 'হুক' সিস্টেমটি সাধারণত অ্যাপ্লিকেশন প্লাগইনগুলির প্রসঙ্গে ব্যবহৃত হয়। অ্যাপ্লিকেশনটিতে স্থির ইন্টিগ্রেশন পয়েন্টস (হুকস) রয়েছে এবং প্রতিটি প্লাগইন সেই হুকের সাথে সংযুক্ত হয়ে কিছু নির্দিষ্ট ক্রিয়া সম্পাদন করতে পারে।
অন্যান্য 'ইভেন্ট'
দ্রষ্টব্য: থ্রেডিং.এভেন্ট উপরোক্ত অর্থে কোনও 'ইভেন্ট সিস্টেম' নয়। এটি একটি থ্রেড সিঙ্ক্রোনাইজেশন সিস্টেম যেখানে একটি থ্রেড অপেক্ষা করে অন্য থ্রেড ইভেন্ট অবজেক্টটির 'সংকেত' দেয়।
নেটওয়ার্ক বার্তা পাঠাগারগুলি প্রায়শই 'ইভেন্ট' শব্দটি ব্যবহার করে; কখনও কখনও এগুলি ধারণায় একই রকম হয়; কখনও না। তারা অবশ্যই আড়াআড়ি থ্রেড-, প্রক্রিয়া- এবং কম্পিউটারের সীমানা করতে পারে। যেমন দেখুন
pyzmq , pymq ,
পাক , টর্নেডো , gevent , eventlet ।
দুর্বল রেফারেন্স
পাইথনে, কোনও পদ্ধতি বা অবজেক্টের রেফারেন্স রাখা নিশ্চিত করে যে এটি আবর্জনা সংগ্রহকারী দ্বারা মোছা হবে না। এটি আকাঙ্ক্ষিত হতে পারে তবে এটি মেমরি ফাঁস হতে পারে: লিঙ্কযুক্ত হ্যান্ডলারগুলি কখনই পরিষ্কার হয় না।
কিছু ইভেন্ট সিস্টেমগুলি এটিকে সমাধান করার জন্য নিয়মিত পরিবর্তে দুর্বল রেফারেন্স ব্যবহার করে।
বিভিন্ন গ্রন্থাগার সম্পর্কে কিছু শব্দ
পর্যবেক্ষক-শৈলীর ইভেন্ট সিস্টেমগুলি:
গ্রন্থাগারগুলি সাবস্ক্রাইব করুন:
- ব্লিঙ্কারের কিছু নিফটি বৈশিষ্ট্য রয়েছে যেমন স্বয়ংক্রিয় সংযোগ বিচ্ছিন্নকরণ এবং প্রেরকের উপর ভিত্তি করে ফিল্টারিং।
- পাইপবসব হ'ল একটি স্থিতিশীল প্যাকেজ, এবং "উন্নত বৈশিষ্ট্য যা ডিবাগিং এবং বিষয় এবং বার্তা বজায় রাখার সুবিধার্থে" প্রতিশ্রুতি দেয়।
- পাইমিটারটি নোড.জেএস ইভেন্টইমিটার 2 এর পাইথন বন্দর এবং নামস্থান, ওয়াইল্ডকার্ড এবং টিটিএল অফার করে।
- পাইডিসপ্যাচার মনে হয় বহু-থেকে-বহু প্রকাশনার ক্ষেত্রে নমনীয়তার উপর জোর দেওয়া হয়েছে দুর্বল উল্লেখগুলি সমর্থন করে।
- লুই একটি পুনর্গঠিত পাইডিসপাচার এবং এটি "বিভিন্ন প্রসঙ্গে" কাজ করা উচিত।
- পাইপাইডিসপ্যাচার ভিত্তিক (আপনি এটি অনুমান করেছিলেন ...) পাইডিসপ্যাচার এবং পিপাইতেও কাজ করে।
- django.dispatch হ'ল একটি সীমাবদ্ধ ইন্টারফেস, তবে উচ্চতর পারফরম্যান্স সহ একটি লিখিত পাইডিসপ্যাচার।
- পাইয়ান্টডিসপাচার পিএইচপি এর সিমফনি ফ্রেমওয়ার্কের ইভেন্ট-প্রেরণের উপর ভিত্তি করে।
- প্রেরণকারীটি জ্যাঙ্গো.ডিস্পাচ থেকে নেওয়া হয়েছিল তবে বেশ পুরানো হচ্ছে।
- ক্রিশ্চিয়ান গার্সিয়ার ইভেন্টম্যাঞ্জার সত্যিই একটি সংক্ষিপ্ত বাস্তবায়ন।
অন্যান্য:
- প্লাগিটিতে একটি হুক সিস্টেম রয়েছে যা
pytest
প্লাগইনগুলি ব্যবহার করে ।
- আরএক্সপি 3 পর্যবেক্ষণযোগ্য প্যাটার্নটি প্রয়োগ করে এবং সংযুক্ত ইভেন্টগুলি, পুনরায় চেষ্টা করার অনুমতি দেয় etc.
- কিউটি এর সিগন্যাল ও স্লট থেকে পাওয়া যায় PyQt
বা PySide2 । একই থ্রেডে ব্যবহৃত হওয়ার সময় বা দুটি পৃথক থ্রেডের মধ্যে ইভেন্ট হিসাবে (ইভেন্ট লুপ ব্যবহার করে) কলব্যাক হিসাবে কাজ করে। সিগন্যাল এবং স্লটগুলির সীমাবদ্ধতা রয়েছে যে তারা কেবলমাত্র শ্রেণীর বস্তুগুলিতে কাজ করে যা থেকে প্রাপ্ত
QObject
।