চাইল্ড প্রসেস মাধ্যমে উত্পন্ন হওয়া না মাল্টিপ্রসেসিং ভাগ প্রোগ্রামে পূর্বে নির্মিত বস্তু?
আমার নিম্নলিখিত সেটআপ আছে:
do_some_processing(filename):
for line in file(filename):
if line.split(',')[0] in big_lookup_object:
# something here
if __name__ == '__main__':
big_lookup_object = marshal.load('file.bin')
pool = Pool(processes=4)
print pool.map(do_some_processing, glob.glob('*.data'))
আমি স্মৃতিতে কিছু বড় বস্তু লোড করছি, তারপরে কর্মীদের একটি পুল তৈরি করা দরকার যা সেই বড় অবজেক্টটি ব্যবহার করা দরকার। বড় অবজেক্টটি কেবল পঠনযোগ্য অ্যাক্সেস করা হয়েছে, প্রক্রিয়াগুলির মধ্যে আমার এটির পরিবর্তনগুলি পাস করার দরকার নেই।
আমার প্রশ্ন হ'ল বড় বস্তুটি কি ভাগ করা স্মৃতিতে লোড হয়, এটি যদি আমি ইউনিক্স / সি-তে কোনও প্রক্রিয়া তৈরি করি, বা প্রতিটি প্রক্রিয়া বড় অবজেক্টের নিজস্ব অনুলিপি লোড করে?
আপডেট করুন: আরও স্পষ্ট করতে - big_lookup_object একটি ভাগ করা লুকআপ অবজেক্ট। আমার এটিকে আলাদা করে আলাদাভাবে প্রক্রিয়া করার দরকার নেই। আমার এটির একটি একক অনুলিপি রাখা দরকার। আমার যে কাজটি এটি বিভক্ত করতে হবে তা হ'ল প্রচুর অন্যান্য বৃহত ফাইল পড়ে এবং সেই বৃহত ফাইলগুলিতে আইটেমগুলি অনুসন্ধানের অবজেক্টের বিপরীতে অনুসন্ধান করা।
আরও আপডেট: ডাটাবেস একটি সূক্ষ্ম সমাধান, মেমক্যাচ করা ভাল সমাধান হতে পারে এবং ডিস্কে ফাইল (তাক বা ডিবিএম) আরও ভাল হতে পারে। এই প্রশ্নে আমি বিশেষত স্মৃতি সমাধানে আগ্রহী ছিলাম। চূড়ান্ত সমাধানের জন্য আমি হ্যাডোপ ব্যবহার করব, তবে আমি দেখতে চেয়েছিলাম যে স্থানীয় একটি মেমোরি সংস্করণও থাকতে পারে কিনা।
marshal.load
পিতামাতার জন্য এবং প্রতিটি সন্তানের জন্য কল করবে (প্রতিটি প্রক্রিয়া মডিউল আমদানি করে)।