हम 50 डाटाफाइलों (अगली पीढ़ी डीएनए अनुक्रम) हर एक पर एक अजगर स्क्रिप्ट चलाने से परिवर्तित करने की आवश्यकता है के साथ एक फ़ोल्डर है। स्क्रिप्ट में प्रति फ़ाइल 5 घंटे लगते हैं और यह सिंगल थ्रेडेड होता है और काफी हद तक सीपीयू बाध्य होता है (सीपीयू कोर न्यूनतम डिस्क आईओ के साथ 99% पर चलता है)।रन 4 समवर्ती उदाहरणों
जब से मैं एक 4 कोर मशीन है, मैं एक बार में इस स्क्रिप्ट का 4 उदाहरणों को चलाने के लिए बेहद प्रक्रिया में तेजी लाने के लिए करना चाहते हैं।
मुझे लगता है मैं एक ही समय में प्रत्येक फ़ोल्डर पर निम्न बैश स्क्रिप्ट चलाने 4 फ़ोल्डरों में डेटा को विभाजित कर सकते हैं और में:
files=`ls -1 *`
for $file in $files;
do
out = $file+=".out"
python fastq_groom.py $file $out
done
लेकिन एक फ़ोल्डर पर इसे चलाने के लिए एक बेहतर तरीका होना चाहिए । हम ऐसा करने के लिए बैश/पायथन/पर्ल/विंडोज का उपयोग कर सकते हैं।
हमें समस्या को हल करने के लिए सबसे आसान तरीका है (दुर्भाग्य से बनाने स्क्रिप्ट बहु लड़ी हम क्या कर सकते हैं परे है)
@phs xargs समाधान का उपयोग किया गया था। हालांकि हम मूल डेवलपर उपकरण @ Björn उत्तर का अनुरोध कर रहे हैं। एक बार फिर धन्यवाद!
बैकटिक में 'ls' के उपयोग, और बूट करने के लिए एक चर के लिए मान निर्दिष्ट, एक लगातार antipattern है। यह रिक्त स्थान के साथ फ़ाइल नामों को तोड़ देगा, और यदि आपके पास उपनिर्देशिकाएं हैं तो यह टूट जाएगी। सही मुहावरे 'फ़ाइल में * के लिए है' - एक चर नामकरण करते समय डॉलर के संकेत की अनुपस्थिति भी ध्यान दें; एक चर को इंटरपोल करते समय आप एक डॉलर के संकेत का उपयोग करते हैं। यह भी देखें http://partmaps.org/era/unix/award.html#ls – tripleee
@triplee टिप –