পাইথন মাল্টিপ্রসেসিং (একটি পিএমওটডাব্লু নিবন্ধ থেকে ) সম্পর্কে শিখছি এবং join()
পদ্ধতিটি ঠিক কী করছে তা সম্পর্কে কিছু ব্যাখ্যা পছন্দ করবে ।
২০০৮ সালের পুরানো টিউটোরিয়ালে এটি বর্ণিত হয়েছে যে p.join()
নীচের কোডটিতে কল ছাড়াই "শিশু প্রক্রিয়াটি অলস বসে থাকবে এবং শেষ হবে না, একটি জম্বি হয়ে উঠবে আপনাকে অবশ্যই ম্যানুয়ালি হত্যা করতে হবে"।
from multiprocessing import Process
def say_hello(name='world'):
print "Hello, %s" % name
p = Process(target=say_hello)
p.start()
p.join()
আমি পরীক্ষার PID
পাশাপাশি একটি মুদ্রণযন্ত্র যুক্ত করেছি time.sleep
এবং যতদূর আমি বলতে পারি, প্রক্রিয়াটি নিজে থেকেই সমাপ্ত হয়:
from multiprocessing import Process
import sys
import time
def say_hello(name='world'):
print "Hello, %s" % name
print 'Starting:', p.name, p.pid
sys.stdout.flush()
print 'Exiting :', p.name, p.pid
sys.stdout.flush()
time.sleep(20)
p = Process(target=say_hello)
p.start()
# no p.join()
20 সেকেন্ডের মধ্যে:
936 ttys000 0:00.05 /Library/Frameworks/Python.framework/Versions/2.7/Reso
938 ttys000 0:00.00 /Library/Frameworks/Python.framework/Versions/2.7/Reso
947 ttys001 0:00.13 -bash
20 সেকেন্ড পরে:
947 ttys001 0:00.13 -bash
আচরণ p.join()
শেষে ফাইলের শেষে ফিরে যুক্ত হিসাবে একই । সপ্তাহের পাইথন মডিউলটি মডিউলটির খুব পঠনযোগ্য ব্যাখ্যা দেয় ; "কোনও প্রক্রিয়াটির কাজ শেষ না হওয়া এবং প্রস্থান হওয়া অবধি অপেক্ষা করতে, যোগ () পদ্ধতিটি ব্যবহার করুন" "তবে মনে হচ্ছে কমপক্ষে ওএস এক্স যেভাবেই এটি করছে।
পদ্ধতিটির নাম সম্পর্কেও আমি ভাবছি। .join()
পদ্ধতিটি কি এখানে কিছুকে মনযোগ দিচ্ছে ? এটি কি কোনও প্রক্রিয়াটি শেষ হওয়ার সাথে সাথে যুক্ত করে দিচ্ছে? অথবা এটি পাইথনের নেটিভ .join()
পদ্ধতিতে কেবল একটি নাম ভাগ করে ?
CPU, Memory resources
পিতামাতার প্রক্রিয়া থেকে আলাদা হচ্ছে, তারপরে join
সন্তানের প্রক্রিয়াটি শেষ হয়ে আবার ফিরে এডি হবে?