জিএনইউ সমান্তরাল বনাম & (মানে পটভূমি) বনাম xargs -P


39

আমি কোনও .shস্ক্রিপ্টে কাজে কোনও সেট সেট চালানোর পার্থক্য বা সুবিধা (যদি থাকে তবে) সম্পর্কে বিভ্রান্ত হয়ে পড়েছিGNU parallel

উদাহরণস্বরূপ ওলে টেঙ্গের উত্তর:

parallel ./pngout -s0 {} R{} ::: *.png

এগুলি ব্যাকগ্রাউন্ডে রাখার মধ্য দিয়ে লুপিং বলার চেয়ে &

উদাহরণস্বরূপ frostschutz এর উত্তর:

#copied from the link for illustration
for stuff in things
do
( something
  with
  stuff ) &
done
wait # for all the something with stuff

সংক্ষেপে তারা কি সিনথেটিকভাবে বা ব্যবহারিকভাবে আলাদা? এবং যদি ব্যবহারিকভাবে আলাদা হয় তবে আমার কখন ব্যবহার করা উচিত?

উত্তর:


46

ব্যাকগ্রাউন্ডে একাধিক কাজ করা একক মেশিনের একাধিক কোর ব্যবহার করার একটি ভাল উপায়। parallelতবে আপনাকে আপনার নেটওয়ার্কের একাধিক সার্ভারগুলিতে কাজ ছড়িয়ে দেওয়ার অনুমতি দেয়। থেকে man parallel:

GNU সমান্তরাল এক বা একাধিক কম্পিউটার ব্যবহার করে সমান্তরালে কাজ সম্পাদনের জন্য একটি শেল টুল । সাধারণ ইনপুট হ'ল ফাইলগুলির তালিকা, হোস্টের একটি তালিকা, ব্যবহারকারীর একটি তালিকা, ইউআরএলগুলির একটি তালিকা, বা টেবিলের তালিকা।

এমনকি কোনও একক কম্পিউটারে চলার সময়ও parallelকীভাবে আপনার কাজগুলিকে সমান্তরাল করা যায় তার চেয়ে অনেক বেশি নিয়ন্ত্রণ আপনাকে দেয়। manপৃষ্ঠা থেকে এই উদাহরণটি নিন :

   To convert *.wav to *.mp3 using LAME running one process per CPU core
   run:

   parallel lame {} -o {.}.mp3 ::: *.wav

ঠিক আছে, আপনি একই সঙ্গে করতে পারে

   for i in *wav; do lame "$i" -o "${i%.wav}.mp3" & done

যাইহোক, এটি দীর্ঘ এবং আরও জটিল এবং আরও গুরুত্বপূর্ণ, .wavফাইল রয়েছে যতগুলি কাজ চালু করবে । আপনি যদি এটি কয়েক হাজার ফাইলে চালান তবে এটি সম্ভবত একটি সাধারণ ল্যাপটপটি হাঁটুতে আনতে পারে। parallelঅন্যদিকে, সিপিইউ কোর প্রতি একটি কাজ চালু করবে এবং সবকিছু সুন্দর এবং পরিচ্ছন্ন রাখবে।

মূলত, parallelআপনার কাজগুলি কীভাবে পরিচালিত হয় এবং কতগুলি উপলভ্য সংস্থান তাদের ব্যবহার করা উচিত তা সূক্ষ্ম করার সুযোগ দেয়। আপনি যদি সত্যিই এই সরঞ্জামটির শক্তি দেখতে চান তবে এর ম্যানুয়ালটি দেখুন বা খুব কমপক্ষে, এটি যে উদাহরণগুলি উপস্থাপন করে।

সমান্তরালের সাথে তুলনা করার জন্য সরল ব্যাকগ্রাউন্ডিং সত্যিকারের ধরণের স্তরের কাছে নেই। যেমন থেকে কীভাবে parallelআলাদা হয় xargs, জিএনইউ জনতা এখানে একটি দুর্দান্ত ব্রেকডাউন দেয় । আরও কিছু স্পষ্ট বিষয় হ'ল:

  • xargs বিশেষ অক্ষরগুলির সাথে খারাপভাবে ডিল করে (যেমন স্থান, 'এবং ")।
  • xargs সমান্তরালভাবে প্রদত্ত সংখ্যক কাজ চালাতে পারে, তবে সমান্তরালে সিপু-কোর জব সংখ্যা চালানোর পক্ষে কোনও সমর্থন নেই।
  • xargs আউটপুটকে দলবদ্ধ করার জন্য কোনও সমর্থন নেই, সুতরাং আউটপুট একসাথে চলতে পারে, উদাহরণস্বরূপ একটি লাইনের প্রথম অর্ধেকটি একটি প্রক্রিয়া থেকে এবং রেখার শেষ অর্ধেক অন্য প্রক্রিয়া থেকে from
  • xargs আউটপুট ক্রম রাখার জন্য কোন সমর্থন নেই, অতএব xargs ব্যবহার করে সমান্তরালভাবে কাজ চালানো হলে প্রথম কাজ শেষ হওয়া পর্যন্ত দ্বিতীয় কাজের আউটপুট স্থগিত করা যাবে না।
  • xargs দূরবর্তী কম্পিউটারে কাজ চালানোর জন্য কোনও সমর্থন নেই।
  • প্রসঙ্গ প্রতিস্থাপনের জন্য xargs এর কোনও সমর্থন নেই, সুতরাং আপনাকে আর্গুমেন্ট তৈরি করতে হবে।

1
এটি একটি ভাল উত্তর, thx। এটি আমার অনুমান অনুসারে বাছাই করে। আমি parallelসিনট্যাক্সটিকে ঘৃণা করি , মুখস্ত করার জন্য কীবোর্ড-ফেসরোলের আরও একটি নতুন ব্র্যান্ড। তবে আমি অনুমান করি যে কোর / জব জুড়ে অটো ভারসাম্যহীন তা মূল্যবান ...?
স্টিফেন হেন্ডারসন

3
semজিএনইউ সমান্তরাল প্যাকেজটির অংশ কিনা তা একবার দেখুন । এটি আপনার সিনট্যাক্স প্রয়োজনীয়তার সাথে আরও ভাল মানায়।
ওলে টাঞ্জ

1
@ ওলেট্যাঞ্জ থেক্স, শুভ কল
স্টিফেন হেন্ডারসন

> xargs প্রসঙ্গ প্রতিস্থাপনের জন্য কোনও সমর্থন নেই, তাই আপনাকে যুক্তি তৈরি করতে হবে। --- এটার মানে কি? এটা -আমি% xargs হয়
চোদা

4
এটি সত্য যে parallelতুলনায় আরও শক্তিশালী xargs, কিন্তু এই তুলনা বরং পক্ষপাতদুষ্ট। উদাহরণস্বরূপ, xargsস্পেস এবং কোটগুলির সমস্যা এড়াতে নাল-টার্মিনেটেড স্ট্রিংগুলিকে ইনপুট হিসাবে সমর্থন করে এবং -dঅনুকরণও করতে পারে parallel(এমনকি তুলনায় উল্লেখ করা হয়েছে!)। xargs -Iসর্বাধিক সাধারণ মামলার জন্য পর্যাপ্ত প্রসঙ্গ প্রতিস্থাপন এবং আমি সাধারণত মেশিনে কোরগুলির সংখ্যা জানি। গ্রুপহীন আউটপুট নিয়ে আমি কখনই সমস্যা অনুভব করিনি।
স্যাম ব্রাইটম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.