কম্পিউটার

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


মাল্টিপ্রসেসিং প্যাকেজ স্পনিং প্রক্রিয়া সমর্থন করে। এটি এমন একটি ফাংশনকে বোঝায় যা একটি নতুন শিশু প্রক্রিয়া লোড করে এবং চালায়। সন্তানের সমাপ্তির জন্য বা সমবর্তী কম্পিউটিং চালানো চালিয়ে যাওয়ার জন্য, তারপরে বর্তমান প্রক্রিয়াটিকে একটি API ব্যবহার করে অপেক্ষা করতে হবে, যা থ্রেডিং মডিউলের মতো।

পরিচয়

যখন আমরা মাল্টিপ্রসেসিং নিয়ে কাজ করি, প্রথমে আমরা প্রক্রিয়া তৈরি করি বস্তু তারপর এটি একটি start() পদ্ধতি কল করে।

উদাহরণ কোড

মাল্টিপ্রসেসিং ইম্পোর্ট থেকে প্রসেস ডিফ ডিসপ্লে():প্রিন্ট ('হাই !! আমি পাইথন') যদি __name__ =='__main__':p =Process(target=display) p.start() p.join() 

এই উদাহরণে, প্রথমে আমরা Process ক্লাস ইমপোর্ট করি তারপর display() ফাংশন দিয়ে Process অবজেক্ট শুরু করি।

তারপর start() মেথড দিয়ে প্রসেস শুরু হয় এবং তারপর join() মেথড দিয়ে প্রক্রিয়াটি সম্পূর্ণ করুন।

এছাড়াও আমরা args কীওয়ার্ড ব্যবহার করে ফাংশনে আর্গুমেন্ট পাঠাতে পারি।

উদাহরণ

মাল্টিপ্রসেসিং ইম্পোর্ট থেকে প্রসেস ডিফ ডিসপ্লে(my_name):প্রিন্ট ('Hi!!!' + " " + my_name) if __name__ =='__main__':p =Process(target=display, args=('Python', )) p.start() p.join()

এই উদাহরণে, আমরা একটি প্রক্রিয়া তৈরি করি যা সংখ্যার ঘনক্ষেত্র গণনা করে এবং সমস্ত ফলাফল কনসোলে প্রিন্ট করে।

উদাহরণ কোড

মাল্টিপ্রসেসিং ইম্পোর্ট থেকে প্রসেস ডিফ কিউব(x):my_numbers-এ x এর জন্য:print('%s কিউব হল %s' % (x, x**3)) যদি __name__ =='__main__':my_numbers =[3 , 4, 5, 6, 7, 8] p =প্রক্রিয়া(target=cube, args=('x',)) p.start()p.joinprint ("সম্পন্ন")

আউটপুট

Done3 কিউব হল 274 ঘনক হল 645 ঘন হল 1256 ঘন হল 2167 ঘন হল 3438 ঘন হল 512

আমরা একই সময়ে একাধিক প্রক্রিয়া তৈরি করতে পারি।

এই উদাহরণে, প্রথমে আমরা একটি প্রক্রিয়া তৈরি করি যা হল প্রসেস1, এই প্রক্রিয়াটি শুধুমাত্র একটি সংখ্যার ঘনক্ষেত্র গণনা করে এবং একই সাথে দ্বিতীয় প্রক্রিয়া প্রক্রিয়া2 পরীক্ষা করে যে এই সংখ্যাটি জোড় বা বিজোড়।

উদাহরণ

মাল্টিপ্রসেসিং ইম্পোর্ট থেকে Processdef কিউব(x):my_numbers-এ x এর জন্য:print('%s কিউব হল %s' % (x, x**3)) def evenno(x):my_numbers-এ x এর জন্য:যদি x % 2 ==0:প্রিন্ট('%s একটি জোড় সংখ্যা ' % (x)) যদি __name__ =='__main__':my_numbers =[3, 4, 5, 6, 7, 8] my_process1 =প্রক্রিয়া(লক্ষ্য=কিউব, args=('x',)) my_process2 =প্রসেস(টার্গেট=ইভেননো, args=('x',)) my_process1.start() my_process2.start() my_process1.join() my_process2.join()প্রিন্ট ( "সম্পন্ন")

আউটপুট

3 ঘনক হল 274 ঘনক হল 645 ঘনক হল 1256 ঘন হল 2167 ঘন হল 3438 ঘন হল 5124 হল একটি জোড় সংখ্যা 6 হল একটি জোড় সংখ্যা 8 হল একটি জোড় সংখ্যা সম্পন্ন করা হল

প্রক্রিয়াগুলির মধ্যে যোগাযোগ

মাল্টিপ্রসেসিং পাইপ এবং সারিগুলিকে সমর্থন করে, যা প্রক্রিয়াগুলির মধ্যে দুই ধরনের যোগাযোগের চ্যানেল৷

পাইপ

মাল্টিপ্রসেসিং-এ, যখন আমরা প্রক্রিয়াগুলির মধ্যে যোগাযোগ করতে চাই, সেই পরিস্থিতিতে পাইপস ব্যবহার করা হয়।

উদাহরণ

মাল্টিপ্রসেসিং ইম্পোর্ট প্রসেস থেকে, পাইপ def myfunction(conn):conn.send(['hi!! আমি পাইথন']) conn.close() if __name__ =='__main__':parent_conn, child_conn =Pipe() p =প্রক্রিয়া(target=myfunction, args=(child_conn,)) p.start() প্রিন্ট (parent_conn.recv() )p.join()

আউটপুট

['হাই!!! আমি পাইথন']

পাইপ দুটি সংযোগ বস্তু প্রদান করে এবং এগুলি পাইপের দুই প্রান্তকে প্রতিনিধিত্ব করে। প্রতিটি সংযোগ বস্তুর দুটি পদ্ধতি রয়েছে একটি হল send() এবং আরেকটি হল recv() পদ্ধতি।

এই উদাহরণে, প্রথমে আমরা একটি প্রক্রিয়া তৈরি করি এবং এই প্রক্রিয়াটি "হাই!! আমি পাইথন" বার্তাটি প্রিন্ট করে এবং তারপরে সমস্ত ডেটা ভাগ করে নেয়৷

সারি

যখন আমরা প্রক্রিয়াগুলির মধ্যে ডেটা পাস করি তখন সেই সময়ে আমরা সারি অবজেক্ট ব্যবহার করতে পারি৷

উদাহরণ

ইমপোর্ট মাল্টিপ্রসেসিং ডিফ ইভেননো(সংখ্যা, q):সংখ্যার জন্য n:যদি n % 2 ==0:q.put(n) যদি __name__ =="__main__":q =মাল্টিপ্রসেসিং। কিউ() p =মাল্টিপ্রসেসিং .Process(target=evenno, args=(range(10), q)) p.start() p.join() যখন q:print(q.get())

আউটপুট

02468

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

এবং অবশেষে সারিটি খালি কিনা তা পরীক্ষা করুন৷

যখন আমরা সংখ্যাগুলি প্রিন্ট করি, প্রথমে আমরা সারির সামনের মানটি প্রিন্ট করি তারপর পরেরটি ইত্যাদি।

লক

যখন আমরা চাই যে একটি সময়ে শুধুমাত্র একটি প্রক্রিয়া কার্যকর করা হয় সেই পরিস্থিতিতে লক ব্যবহার করা হয়। এর মানে হল যে সময় অনুরূপ কোড চালানো থেকে অন্যান্য প্রক্রিয়া ব্লক করে। প্রক্রিয়া শেষ হওয়ার পরে লকটি প্রকাশ করা হবে৷

লক পদ্ধতি ব্যবহার করার উদাহরণ

উদাহরণ

মাল্টিপ্রসেসিং আমদানি প্রক্রিয়া থেকে, Lockdef dispmay_name(l, i):l.acquire()print ('Hi', i) l.release()if __name__ =='__main__':my_lock =Lock() my_name =[ 'Aadrika', 'Adwaita', 'Sakya', 'Sanj']my_name এ নামের জন্য:Process(target=dispmay_name, args=(my_lock,name)).start()

আউটপুট

হাই আদ্রিকাহি অদ্বৈতাহি শাক্যহি সাঞ্জ

লগিং

মাল্টিপ্রসেসিং মডিউল লগিং মডিউলও প্রদান করে তা নিশ্চিত করার জন্য যে, লগিং প্যাকেজ যদি লক ফাংশন ব্যবহার না করে, তাহলে প্রসেসগুলির মধ্যে বার্তাগুলি কার্যকর করার সময় মিশ্রিত হয়৷

উদাহরণ

মাল্টিপ্রসেসিং আমদানি করুন, logginglogger =multiprocessing.log_to_stderr()logger.setLevel(logging.INFO)logger.warning('ত্রুটি ঘটেছে')

এই উদাহরণে প্রথমে আমরা লগিং এবং মাল্টিপ্রসেসিং মডিউল আমদানি করি তারপর আমরা multiprocessing.log_to_stderr() পদ্ধতি ব্যবহার করি। এবং এটি get_logger() কল করে সেইসাথে sys.stderr এ যোগ করে এবং অবশেষে আমরা লগারের স্তর সেট করি এবং বার্তা পৌঁছে দিই।


  1. issuperset() পাইথনে

  2. পাইথনে সিউডো-টার্মিনাল ইউটিলিটি

  3. পাইথনে একটি স্ট্রিং এস্কেপ সিকোয়েন্স কিভাবে প্রক্রিয়া করবেন?

  4. পাইথন সকেট ত্রুটি 48 ঠিক করুন