मैं 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

यदि आप GNU 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.