আমি xargs
প্রায় 30 মিলিয়ন ছোট ছোট ফাইলগুলি প্রক্রিয়া করার জন্য পাইথন স্ক্রিপ্ট কল করতে ব্যবহার করছি । আমি xargs
প্রক্রিয়া সমান্তরাল ব্যবহার করতে আশা করি । আমি যে কমান্ডটি ব্যবহার করছি তা হ'ল:
find ./data -name "*.json" -print0 |
xargs -0 -I{} -P 40 python Convert.py {} > log.txt
মূলত, Convert.py
খুব ছোট পড়তে হবে JSON , ফাইল (4 কিলোবাইট) অন্য 4 কিলোবাইট ফাইলে কিছু প্রক্রিয়াকরণ এবং লেখ না। আমি 40 সিপিইউ কোর সহ একটি সার্ভারে চলছে। এবং এই সার্ভারে অন্য কোনও সিপিইউ-নিবিড় প্রক্রিয়া চলছে না।
হটোপ পর্যবেক্ষণ করে (বিটিডব্লিউ, সিপিইউর পারফরম্যান্স নিরীক্ষণের জন্য অন্য কোনও ভাল উপায় আছে কি?), আমি দেখতে পাচ্ছি যে -P 40
এটি প্রত্যাশার চেয়ে দ্রুত নয়। কখনও কখনও সমস্ত কোর স্থির হয়ে যায় এবং 3-4 সেকেন্ডের জন্য প্রায় শূন্যে কমে যায়, তারপরে 60-70% এ ফিরে আসবে। তারপরে আমি সমান্তরাল প্রক্রিয়ার সংখ্যা হ্রাস করার চেষ্টা করি -P 20-30
, তবে এটি এখনও খুব দ্রুত নয়। আদর্শ আচরণটি লিনিয়ার স্পিড-আপ হওয়া উচিত। এক্সার্গসের সমান্তরাল ব্যবহারের জন্য কোনও পরামর্শ?
xargs -P
এবং >
অর্ধ-রেখা সমস্যা হওয়ার কারণে জাতি অবস্থার জন্য আপ খুলছে gnu.org/software/parallel/... গনুহ পরিবর্তে সমান্তরাল যে সমস্যা থাকবে না ব্যবহার করা হচ্ছে।