মাল্টিপ্রসেসিং হল পাইথন প্রোগ্রামিং-এর একটি জনপ্রিয় কৌশল যা আপনাকে একযোগে একাধিক প্রক্রিয়া চালানোর অনুমতি দেয়, প্রায়শই কার্যক্ষমতার উন্নতি এবং সিস্টেম সংস্থানগুলির আরও দক্ষ ব্যবহারের ফলে। এই নিবন্ধটি ব্যবহার মধ্যে dives মাল্টিপ্রসেসিং পাইথনে লাইব্রেরি, বিশেষভাবে ফোকাস করে মানচিত্র ফাংশন মানচিত্র ফাংশন আপনাকে পুনরাবৃত্তিযোগ্য প্রতিটি আইটেমে একটি ফাংশন প্রয়োগ করতে দেয়, যেমন একটি তালিকা, এবং ফলাফল সহ একটি নতুন তালিকা ফেরত দেয়। মাল্টিপ্রসেসিং ব্যবহার করে, আমরা অধিকতর দক্ষতা এবং মাপযোগ্যতার জন্য এই প্রক্রিয়াটিকে সমান্তরাল করতে পারি।
এই নিবন্ধে, আমরা সেই সমস্যাটি অন্বেষণ করব যার জন্য মানচিত্র ফাংশন সহ মাল্টিপ্রসেসিং একটি চমৎকার সমাধান হতে পারে, প্রাসঙ্গিক লাইব্রেরি এবং ফাংশনগুলি নিয়ে আলোচনা করব, কোডের ধাপে ধাপে ব্যাখ্যা প্রদান করব এবং মেরুদণ্ডের উপর ভিত্তি করে তৈরি করা সম্পর্কিত বিষয়গুলিতে অনুসন্ধান করব। মাল্টিপ্রসেসিং এবং ম্যাপ ফাংশন।
মাল্টিপ্রসেসিং ম্যাপ: সমস্যা এবং সমাধান
আমরা যে সমস্যার সমাধান করতে চাই তা হল একটি বৃহৎ পুনরাবৃত্তিযোগ্য, যেমন একটি তালিকা, টিপল বা অন্য কোনো বস্তু যা পুনরাবৃত্তি সমর্থন করে এমন প্রতিটি আইটেমে একটি ফাংশন প্রয়োগ করার কর্মক্ষমতা এবং দক্ষতা উন্নত করা। এই ধরনের কাজের মুখোমুখি হলে, অন্তর্নির্মিত মানচিত্র ফাংশন বা তালিকা বোঝার ব্যবহার বেশ ধীর এবং অদক্ষ হতে পারে।
সমাধান হল পাইথনে মাল্টিপ্রসেসিং লাইব্রেরি ব্যবহার করা, বিশেষ করে, পুল ক্লাস এবং তার মানচিত্র পদ্ধতি ব্যবহার করে মাল্টিপ্রসেসিং Pool.map() ফাংশন, আমরা একাধিক প্রসেস জুড়ে আমাদের ফাংশনের সঞ্চালন বিতরণ করতে পারি।
কোডের ধাপে ধাপে ব্যাখ্যা
আসুন কোডটি ভেঙে ফেলি এবং ব্যাখ্যা করি কিভাবে মাল্টিপ্রসেসিং ম্যাপ ফাংশনটি কার্যকরভাবে ব্যবহার করা যায়:
import multiprocessing import time def square(n): time.sleep(0.5) return n * n # Create the list of numbers numbers = list(range(10)) # Initialize the multiprocessing Pool pool = multiprocessing.Pool() # Use the map function with multiple processes squared_numbers = pool.map(square, numbers) print(squared_numbers)
- প্রথমত, আমদানি করুন মাল্টিপ্রসেসিং মডিউল, যা পাইথনে সমান্তরাল প্রক্রিয়াকরণ ব্যবহার করার জন্য প্রয়োজনীয় সরঞ্জাম ধারণ করে।
- নামে একটি ফাংশন তৈরি করুন বর্গক্ষেত্র যেটি কেবল অর্ধেক সেকেন্ডের জন্য ঘুমায় এবং তারপর তার ইনপুট আর্গুমেন্টের বর্গ ফেরত দেয়। এই ফাংশনটি একটি গণনার অনুকরণ করে যা সম্পূর্ণ হতে একটি যুক্তিসঙ্গত পরিমাণ সময় নেয়।
- নামক একটি তালিকা তৈরি করুন সংখ্যার, যাতে 0 থেকে 9 পর্যন্ত পূর্ণসংখ্যা থাকে (অন্তর্ভুক্ত)।
- সূচনা a পুল মাল্টিপ্রসেসিং মডিউল থেকে বস্তু। পুল অবজেক্টটি কর্মী প্রক্রিয়াগুলি পরিচালনা করার একটি উপায় হিসাবে কাজ করে যা আপনি আপনার কাজগুলিকে সমান্তরাল করতে ব্যবহার করবেন।
- কল করুন মানচিত্র পুল বস্তুর উপর পদ্ধতি, এবং পাস বর্গক্ষেত্র ফাংশন এবং সংখ্যার তালিকা মানচিত্র পদ্ধতিটি তারপরে পুলে উপলব্ধ কর্মী প্রক্রিয়াগুলি ব্যবহার করে একযোগে সংখ্যা তালিকার প্রতিটি আইটেমের জন্য বর্গাকার ফাংশন প্রয়োগ করে।
- বর্গ_সংখ্যার ফলের তালিকা প্রিন্ট করুন, যাতে সংখ্যার তালিকা থেকে বর্গীয় মান থাকতে হবে।
পাইথন মাল্টিপ্রসেসিং লাইব্রেরি
পাইথন মাল্টিপ্রসেসিং লাইব্রেরি আপনার প্রোগ্রামে সমান্তরালতা বাস্তবায়নের একটি স্বজ্ঞাত উপায় প্রদান করে। এটি উচ্চ-স্তরের বিমূর্ততা প্রদান করে সাধারণত সমান্তরাল প্রোগ্রামিংয়ের সাথে যুক্ত কিছু জটিলতাকে মুখোশ করে পুল. পুল ক্লাস একাধিক প্রক্রিয়া জুড়ে কাজের বিতরণকে সহজ করে, ব্যবহারকারীকে ন্যূনতম ঝামেলা সহ সমান্তরাল প্রক্রিয়াকরণের সুবিধাগুলি অনুভব করতে সক্ষম করে।
Python Itertools মডিউল এবং সম্পর্কিত ফাংশন
যদিও মাল্টিপ্রসেসিং অনেক সমান্তরাল কাজের জন্য একটি চমৎকার সমাধান, এটি উল্লেখ করার মতো যে পাইথন অন্যান্য লাইব্রেরি এবং সরঞ্জামগুলিও সরবরাহ করে যা অনুরূপ প্রয়োজনগুলি পূরণ করে। উদাহরণস্বরূপ, itertools মডিউল অনেকগুলি ফাংশন অফার করে যা পুনরাবৃত্তিযোগ্যগুলিতে কাজ করে, প্রায়শই উন্নত দক্ষতার সাথে। কিছু itertools ফাংশন মত imap() এবং imap_unordered() একটি পুনরাবৃত্তিযোগ্য ফাংশন প্রয়োগ করার প্রক্রিয়া সমান্তরাল করতে পারে। যাইহোক, এটা মনে রাখা গুরুত্বপূর্ণ যে itertools প্রাথমিকভাবে ইটারেটর-ভিত্তিক সমাধানগুলিতে ফোকাস করে, যেখানে মাল্টিপ্রসেসিং লাইব্রেরি সমান্তরালতার জন্য আরও ব্যাপক পদ্ধতির প্রস্তাব করে, মানচিত্রের মতো ফাংশনগুলির বাইরে অতিরিক্ত সরঞ্জাম এবং ক্ষমতা প্রদান করে।