আমি কীভাবে xargs "সমান্তরাল প্রসেসর" এর সূচক পেতে পারি?


14

ধরা যাক, আমার দুটি নামী সংস্থান রয়েছে 0এবং নাম রয়েছে এবং 1কেবলমাত্র এটি অ্যাক্সেস করা যেতে পারে।

xargsএটি একটি মুক্ত পারস্পরিক বর্জনীয় পরিষেবা হিসাবে ব্যবহার করার জন্য চালু হওয়া "সমান্তরাল প্রসেসর" এর "সূচক" পুনরুদ্ধার করার কোনও উপায় আছে কি ? উদাহরণস্বরূপ, নিম্নলিখিত সমান্তরাল গণনা বিবেচনা করুন:

$ echo {1..8} | xargs -d " " -P 2 -I {} echo "consuming task {}"
consuming task 1
consuming task 2
consuming task 3
consuming task 4
consuming task 5
consuming task 6
consuming task 7
consuming task 8

আমার প্রশ্নটি কোনও যাদু শব্দের উপস্থিত রয়েছে কিনা তা বলুন indexযেখানে আউটপুটটি দেখতে ভাল লাগবে

$ echo {1..8} | xargs -d " " -P 2 -I {} echo "consuming task {} with resource index"
consuming task 1 with resource 0
consuming task 2 with resource 1
consuming task 3 with resource 1
consuming task 4 with resource 1
consuming task 5 with resource 0
consuming task 6 with resource 1
consuming task 7 with resource 0
consuming task 8 with resource 0

যেখানে একমাত্র গ্যারান্টি হ'ল কেবলমাত্র সর্বাধিক এক প্রক্রিয়া কেবল রিসোর্স 0এবং একই জন্য ব্যবহার করে 1। মূলত, আমি এই সূচিটি শিশু প্রক্রিয়াটির সাথে যোগাযোগ করতে চাই যা নিয়মের সম্মান করবে কেবল যে সংস্থানটি বলা হয়েছিল তা ব্যবহার করার জন্য।

অবশ্যই, এটি দুটিরও বেশি সংস্থানগুলিতে প্রসারিত করা ভাল। দস্তাবেজগুলি পরিদর্শন করা, xargsসম্ভবত এটি করতে পারবেন না। একটি ন্যূনতম সমতুল্য সমাধান আছে? নকল লক হিসাবে ফাইলগুলি ব্যবহার / পরিষ্কার করা ভাল নয়।

উত্তর:


19

আপনি যদি জিএনইউ xargs ব্যবহার করে থাকেন তবে তা এখানে রয়েছে --process-slot-var:

--process-slot-var= এনভায়রনমেন্ট-ভেরিয়েবল-নাম প্রতিটি চলমান শিশু প্রক্রিয়াতে
পরিবেশের পরিবর্তনশীল পরিবেশ-পরিবর্তনশীল-নামটিকে একটি অনন্য মান হিসাবে সেট করুন । প্রতিটি মান দশমিক পূর্ণসংখ্যা হয়। সন্তানের প্রস্থান করার পরে মানগুলি পুনরায় ব্যবহার করা হয়। উদাহরণস্বরূপ এটি একটি প্রাথমিক লোড বিতরণ প্রকল্পে ব্যবহার করা যেতে পারে।

সুতরাং, উদাহরণস্বরূপ:

~ echo {1..9} | xargs -n2 -P2 --process-slot-var=index sh -c 'echo "$index" "$@" "$$"' _
0 1 2 10475
1 3 4 10476
1 5 6 10477
0 7 8 10478
1 9 10479
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.