পাইথন মাল্টিপ্রসেসিং সারি

Pa Ithana Maltiprasesim Sari



তথ্য কাঠামোর সবচেয়ে গুরুত্বপূর্ণ উপাদান হল সারি। 'ফার্স্ট ইন, ফার্স্ট আউট' ডেটা স্ট্রাকচার কিউ যা পাইথন মাল্টিপ্রসেসিংয়ের ভিত্তি তুলনীয়। ডেটা সংগ্রহ করার জন্য প্রক্রিয়াটিকে অনুমতি দেওয়ার জন্য প্রক্রিয়া ফাংশনে সারি দেওয়া হয়। ডেটার প্রথম আইটেমটি সারিতে থেকে মুছে ফেলার জন্য প্রথম আইটেমটি প্রবেশ করানো হবে। সারিতে ডেটা যোগ করতে আমরা সারির “পুট()” পদ্ধতি ব্যবহার করি এবং সারি থেকে ডেটা পুনরুদ্ধার করতে এর “গেট()” পদ্ধতি ব্যবহার করি।

উদাহরণ 1: পাইথনে একটি মাল্টিপ্রসেসিং সারি তৈরি করতে Queue() পদ্ধতি ব্যবহার করা

এই উদাহরণে, আমরা 'queue()' পদ্ধতি ব্যবহার করে পাইথনে একটি মাল্টিপ্রসেসিং সারি তৈরি করি। মাল্টিপ্রসেসিং বলতে বোঝায় একটি সিস্টেমে এক বা একাধিক সিপিইউ-এর ব্যবহার যাতে একই সাথে দুই বা ততোধিক প্রসেস করা যায়। মাল্টিপ্রসেসিং, পাইথনে একটি নির্মিত মডিউল, প্রক্রিয়াগুলির মধ্যে স্যুইচ করার সুবিধা দেয়। মাল্টিপ্রসেসিংয়ের সাথে কাজ করার আগে আমাদের অবশ্যই প্রসেস প্রোপার্টির সাথে পরিচিত হতে হবে। আমরা সচেতন যে সারি ডেটা মডেলের একটি গুরুত্বপূর্ণ উপাদান। স্ট্যান্ডার্ড ডেটা সারি, যা 'ফার্স্ট-ইন-ফার্স্ট-আউট' ধারণার উপর নির্মিত, এবং পাইথন মাল্টিপ্রসেসিং সঠিক প্রতিরূপ। সাধারণভাবে, সারি পাইথন অবজেক্টকে সঞ্চয় করে এবং কাজগুলির মধ্যে ডেটা স্থানান্তরের জন্য গুরুত্বপূর্ণ।







'স্পাইডার' টুলটি পাইথন স্ক্রিপ্ট প্রস্তুত করার জন্য ব্যবহার করা হয়, তাই চলুন শুরু করা যাক। আমাদের প্রথমে মাল্টিপ্রসেসিং মডিউল আমদানি করতে হবে কারণ আমরা পাইথন মাল্টিপ্রসেসিং স্ক্রিপ্ট চালাচ্ছি। আমরা 'm' হিসাবে মাল্টিপ্রসেসিং মডিউল আমদানি করে এটি করেছি। 'm.queue()' কৌশল ব্যবহার করে, আমরা মাল্টিপ্রসেসিং 'queue()' পদ্ধতি চালু করি। এখানে, আমরা 'কিউ' নামে একটি ভেরিয়েবল তৈরি করি এবং এতে মাল্টিপ্রসেসিং 'কিউ()' মেথড রাখি। যেহেতু আমরা জানি যে সারিতে আইটেমগুলিকে 'প্রথম-ইন, প্রথম-আউট' ক্রমে সংরক্ষণ করা হয়, আমরা প্রথমে যে আইটেমটি যোগ করি তা প্রথমে সরানো হয়। মাল্টিপ্রসেসিং সারি চালু করার পরে, আমরা তারপরে 'প্রিন্ট()' পদ্ধতিকে কল করি, এটিকে স্ক্রিনে প্রদর্শন করার যুক্তি হিসাবে 'একটি মাল্টিপ্রসেসিং সারি আছে' বিবৃতিটি পাস করে। তারপরে, যেহেতু আমরা এই ভেরিয়েবলে নির্মিত সারি সংরক্ষণ করি, তাই আমরা 'প্রিন্ট()' পদ্ধতির বন্ধনীতে 'কিউ' ভেরিয়েবল পাস করে সারিটি প্রিন্ট করি।




নিম্নলিখিত চিত্রটি দেখায় যে পাইথন মাল্টিপ্রসেসিং সারি এখন তৈরি করা হয়েছে। প্রিন্ট স্টেটমেন্টটি প্রথমে দেখানো হয়। এই মাল্টিপ্রসেসিং সারিটি নির্ধারিত মেমরি ঠিকানায় নির্মিত হওয়ার পরে, এটি দুটি বা ততোধিক চলমান প্রক্রিয়াগুলির মধ্যে স্বতন্ত্র ডেটা স্থানান্তর করতে ব্যবহার করা যেতে পারে।







উদাহরণ 2: পাইথনে মাল্টিপ্রসেসিং সারির আকার নির্ধারণ করতে “Qsize()” পদ্ধতি ব্যবহার করা

এই ক্ষেত্রে আমরা মাল্টিপ্রসেসিং সারির আকার নির্ধারণ করি। মাল্টিপ্রসেসিং সারির আকার গণনা করতে, আমরা 'qsize()' পদ্ধতি ব্যবহার করি। 'qsize()' ফাংশন পাইথন মাল্টিপ্রসেসিং সারির আসল আকার প্রদান করে। অন্য কথায়, এই পদ্ধতিটি একটি সারিতে থাকা আইটেমের মোট সংখ্যা প্রদান করে।

কোড চালানোর আগে পাইথন মাল্টিপ্রসেসিং মডিউলটিকে 'm' হিসাবে আমদানি করে শুরু করা যাক। তারপর, “m.queue()” কমান্ড ব্যবহার করে, আমরা মাল্টিপ্রসেসিং “queue()” ফাংশন চালু করি এবং ফলাফলটিকে “Queue” ভেরিয়েবলে রাখি। তারপর, 'put()' পদ্ধতি ব্যবহার করে, আমরা নিম্নলিখিত লাইনের সারিতে আইটেমগুলি যোগ করি। এই পদ্ধতিটি একটি সারিতে ডেটা যোগ করতে ব্যবহৃত হয়। অতএব, আমরা 'পুট()' পদ্ধতির সাথে 'সারি' কল করি এবং এর বন্ধনীতে উপাদান হিসাবে পূর্ণসংখ্যা সংখ্যা সরবরাহ করি। 'পুট()' ফাংশন ব্যবহার করে আমরা যে সংখ্যাগুলি যোগ করি তা হল '1', '2', '3', '4', '5', '6,' এবং '7'।



উপরন্তু, মাল্টিপ্রসেসিং সারির আকার পেতে 'সারি' ব্যবহার করে, আমরা মাল্টিপ্রসেসিং সারির সাথে 'qsize()' কল করি। তারপর, নতুন গঠিত 'ফলাফল' ভেরিয়েবলে, আমরা 'qsize()' পদ্ধতির ফলাফল সংরক্ষণ করি। এর পরে, আমরা 'প্রিন্ট()' পদ্ধতিকে কল করি এবং এর প্যারামিটার হিসাবে 'মাল্টিপ্রসেসিং কিউয়ের আকার' বিবৃতিটি পাস করি। এর পরে, আমরা 'প্রিন্ট()' ফাংশনে 'ফলাফল' ভেরিয়েবলকে কল করি যেহেতু এই ভেরিয়েবলটিতে আকারটি সংরক্ষণ করা হয়েছে।


আউটপুট ইমেজ প্রদর্শিত আকার আছে. মাল্টিপ্রসেসিং সারিতে সাতটি উপাদান যোগ করতে আমরা 'পুট()' ফাংশন ব্যবহার করি এবং আকার নির্ধারণের জন্য 'qsize()' ফাংশন ব্যবহার করি, মাল্টিপ্রসেসিং সারির আকার '7' প্রদর্শিত হয়। ইনপুট স্টেটমেন্ট 'মাল্টিপ্রসেসিং সারির আকার' আকারের আগে দেখানো হয়েছে।

উদাহরণ 3: পাইথন মাল্টিপ্রসেসিং সারিতে 'পুট()' এবং 'গেট()' পদ্ধতি ব্যবহার করা

পাইথন মাল্টিপ্রসেসিং সারি থেকে 'পুট()' এবং 'গেট()' সারি পদ্ধতিগুলি এই উদাহরণে ব্যবহার করা হয়েছে। আমরা এই উদাহরণে দুটি ব্যবহারকারী-সংজ্ঞায়িত ফাংশন বিকাশ করি। এই উদাহরণে, আমরা একটি প্রক্রিয়া তৈরি করতে একটি ফাংশন সংজ্ঞায়িত করি যা '5' র্যান্ডম পূর্ণসংখ্যা তৈরি করে। আমরা তাদের একটি সারিতে যুক্ত করতে 'put()' পদ্ধতি ব্যবহার করি। 'পুট()' পদ্ধতিটি আইটেমগুলিকে সারিতে রাখতে ব্যবহার করা হয়। তারপর, সারি থেকে সংখ্যাগুলি পুনরুদ্ধার করতে এবং তাদের মানগুলি ফেরত দিতে, আমরা অন্য একটি ফাংশন লিখি এবং প্রক্রিয়া চলাকালীন এটিকে কল করি। আমরা সারি থেকে সংখ্যাগুলি পুনরুদ্ধার করতে 'get()' ফাংশন ব্যবহার করি যেহেতু এই পদ্ধতিটি 'put()' পদ্ধতি ব্যবহার করে সন্নিবেশ করা সারি থেকে ডেটা পুনরুদ্ধার করতে ব্যবহৃত হয়।

এখন কোড বাস্তবায়ন শুরু করা যাক। প্রথমত, আমরা এই স্ক্রিপ্টটি তৈরি করে এমন চারটি লাইব্রেরি আমদানি করি। আমরা প্রথমে টাইম মডিউল থেকে 'স্লিপ' ইম্পোর্ট করি যাতে সেকেন্ডে পরিমাপ করা কিছু সময়ের জন্য এক্সিকিউশন বিলম্বিত হয়, তারপরে র্যান্ডম মডিউল থেকে 'এলোমেলো' যা এলোমেলো সংখ্যা তৈরি করতে ব্যবহৃত হয়, তারপর মাল্টিপ্রসেসিং থেকে 'প্রসেস' করে কারণ এই কোডটি একটি প্রক্রিয়া তৈরি করে। , এবং অবশেষে, মাল্টিপ্রসেসিং থেকে 'সারি'। প্রাথমিকভাবে একটি ক্লাস ইনস্ট্যান্স তৈরি করে, সারি ব্যবহার করা যেতে পারে। ডিফল্টরূপে, এটি একটি অসীম সারি বা সর্বোচ্চ আকার ছাড়াই একটি সারি স্থাপন করে। শূন্যের চেয়ে বড় সংখ্যায় সর্বোচ্চ আকারের বিকল্প সেট করে, আকারের সীমাবদ্ধতা সহ একটি সৃষ্টি করা সম্ভব।


আমরা একটি ফাংশন সংজ্ঞায়িত. তারপরে, যেহেতু এই ফাংশনটি ব্যবহারকারী-সংজ্ঞায়িত, তাই আমরা এটিকে 'ফাংশন1' নাম দিই এবং এর আর্গুমেন্ট হিসাবে 'কিউ' শব্দটি পাস করি। এর পরে, আমরা 'প্রিন্ট()' ফাংশনটি চালু করি, এটিকে 'বিল্ডার: রানিং', 'ফ্লাশ' এবং অবজেক্ট 'ট্রু' স্টেটমেন্টগুলি পাস করি। পাইথনের প্রিন্ট ফাংশনে ফ্লাশ নামে একটি অনন্য বিকল্প রয়েছে যা ব্যবহারকারীকে এই আউটপুটটি বাফার করতে হবে কিনা তা চয়ন করতে দেয়। পরবর্তী ধাপ হল টাস্ক জেনারেট করা। এটি করার জন্য, আমরা “for” ব্যবহার করি এবং “m” ভেরিয়েবল তৈরি করি এবং রেঞ্জটিকে “5” এ সেট করি। তারপরে, পরের লাইনে, 'এলোমেলো()' ব্যবহার করুন এবং ফলাফলটি আমাদের তৈরি ভেরিয়েবলে সংরক্ষণ করুন যা 'মান'। এটি নির্দেশ করে যে ফাংশনটি এখন তার পাঁচটি পুনরাবৃত্তি শেষ করেছে, প্রতিটি পুনরাবৃত্তি 0 থেকে 5 পর্যন্ত একটি এলোমেলো পূর্ণসংখ্যা তৈরি করে।

তারপরে, নিম্নলিখিত ধাপে, আমরা 'sleep()' ফাংশনটিকে কল করি এবং একটি নির্দিষ্ট সংখ্যক সেকেন্ডের জন্য অংশটি বিলম্বিত করার জন্য 'মান' আর্গুমেন্ট পাস করি। তারপরে, আমরা সারিতে মান যোগ করতে 'পুট()' পদ্ধতির সাথে 'সারি' বলি। তারপর ব্যবহারকারীকে জানানো হয় যে “queue.put()” পদ্ধতিটি আর একবার ব্যবহার করে এবং “None” মান পাস করে আর কোন কাজ করতে হবে না। তারপর, আমরা 'প্রিন্ট()' পদ্ধতি চালাই, 'বিল্ডার: রেডি' স্টেটমেন্টটি 'ফ্লাশ' সহ পাস করি এবং এটিকে 'ট্রু' এ সেট করি।


আমরা এখন একটি দ্বিতীয় ফাংশন, 'ফাংশন2' সংজ্ঞায়িত করি এবং এটির আর্গুমেন্ট হিসাবে 'কিউ' কীওয়ার্ড নির্ধারণ করি। তারপর, রিপোর্ট পাস করার সময় আমরা 'প্রিন্ট()' ফাংশনকে কল করি 'ইউজার: রানিং' এবং 'ফ্লাশ'  যা 'ট্রু' এ সেট করা আছে। ডাটা কিউ থেকে বের করে নিয়ে নতুন তৈরি “আইটেম” ভেরিয়েবলে রাখার জন্য আমরা while true কন্ডিশন ব্যবহার করে “function2” এর অপারেশন শুরু করি। তারপর, শর্ত সত্য হলে লুপকে বাধা দিতে আমরা 'if' শর্ত, 'item is None' ব্যবহার করি। কোনো আইটেম উপলব্ধ না হলে, এটি থামিয়ে দেয় এবং একটির জন্য ব্যবহারকারীকে জিজ্ঞাসা করে। এই ক্ষেত্রে টাস্কটি লুপ এবং শেষ বন্ধ করে দেয় যদি মান থেকে প্রাপ্ত আইটেমটি নাল হয়। তারপরে, নিম্নলিখিত ধাপে, আমরা 'প্রিন্ট()' ফাংশনটিকে কল করি এবং এটিতে 'ব্যবহারকারী: প্রস্তুত' প্রতিবেদন এবং 'ফ্লাশ=ট্রু' প্যারামিটার প্রদান করি।


তারপর, আমরা 'if-name = main_' ব্যবহার করে মূল প্রক্রিয়াটি প্রবেশ করি। আমরা “কিউ()” পদ্ধতিতে কল করে এবং “কিউ” ভেরিয়েবলে সংরক্ষণ করে একটি সারি তৈরি করি। এর পরে, আমরা ব্যবহারকারী ফাংশনটিকে 'ফাংশন2' বলে একটি প্রক্রিয়া তৈরি করি। এই জন্য, আমরা 'প্রক্রিয়া' ক্লাস কল. এর ভিতরে, আমরা প্রসেসে ফাংশন কল করার জন্য “target=function2” পাস করি, আর্গুমেন্ট “কিউ” পাস করি এবং “User_process” ভেরিয়েবলে সংরক্ষণ করি। তারপরে প্রক্রিয়াটি 'ব্যবহারকারী_ প্রসেস' ভেরিয়েবলের সাথে 'স্টার্ট()' পদ্ধতিতে কল করে শুরু হয়। আমরা তারপর প্রক্রিয়াটিতে 'ফাংশন1' কল করার জন্য একই পদ্ধতি পুনরাবৃত্তি করি এবং এটিকে 'বিল্ডার প্রক্রিয়া' ভেরিয়েবলে রাখি। তারপরে, আমরা “join()” পদ্ধতির মাধ্যমে প্রসেসগুলিকে এক্সিকিউশনের জন্য অপেক্ষা করতে বলি।


এখন এটি উপস্থাপন করা হয়েছে, আপনি আউটপুটে উভয় ফাংশনের বিবৃতি দেখতে পারেন। এটি যথাক্রমে 'get()' পদ্ধতি ব্যবহার করে 'put()' এবং 'get()' ব্যবহার করে যোগ করা আইটেমগুলি প্রদর্শন করে।

উপসংহার

আমরা এই নিবন্ধে পাইথন মাল্টিপ্রসেসিং সারি সম্পর্কে শিখেছি। আমরা প্রদত্ত চিত্রগুলি ব্যবহার করেছি। প্রথমে, আমরা বর্ণনা করেছি কিভাবে queue() ফাংশন ব্যবহার করে Python মাল্টিপ্রসেসিং-এ একটি সারি তৈরি করা যায়। তারপর, আমরা সারি নির্ধারণ করতে 'qsize()' পদ্ধতি ব্যবহার করেছি। এছাড়াও আমরা কিউ এর পুট() এবং গেট() পদ্ধতি ব্যবহার করেছি। টাইম মডিউলের স্লিপ ক্লাস এবং র্যান্ডম মডিউলের এলোমেলো ক্লাস উভয়ই শেষ উদাহরণে আলোচনা করা হয়েছিল।