আমার শেল স্ক্রিপ্টিং সমস্যা রয়েছে যেখানে আমাকে ইনপুট ফাইলগুলি (প্রতিটি ইনপুট লাইনযুক্ত প্রতিটি ফাইল) পূর্ণ একটি ডিরেক্টরি দেওয়া হয়েছে এবং তাদের প্রতিটি আউটপুট একটি অনন্য ফাইলে পুনর্নির্দেশ করা উচিত (ওরফে, file_1.input প্রয়োজন) ফাইল_1. আউটপুট, এবং এগুলিতে ক্যাপচার করা হবে)।
পূর্ব-সমান্তরাল , আমি কেবল ডিরেক্টরিতে প্রতিটি ফাইল পুনরাবৃত্তি করব এবং আমার কমান্ডটি সম্পাদন করব, প্রসেসরকে অভিভূত না করার জন্য কিছু ধরণের টাইমার / গণনা কৌশল করার সময় (ধরে নিবেন যে প্রতিটি প্রক্রিয়াটির ধ্রুব রানটাইম আছে)। তবে, আমি জানি যে সবসময় এটি হবে না, সুতরাং "সমান্তরাল" এর মতো সমাধান ব্যবহার করা কাস্টম কোড না লিখে শেল স্ক্রিপ্ট মাল্টি-থ্রেডিং পাওয়ার সেরা উপায় বলে মনে হয়।
আমি এই প্রতিটি ফাইলের প্রক্রিয়া করার জন্য সমান্তরালভাবে চাবুক দেওয়ার কিছু উপায় সম্পর্কে চিন্তাভাবনা করেছি (এবং আমাকে আমার কোরগুলি দক্ষতার সাথে পরিচালনা করতে দিয়েছি), সেগুলি সবই হ্যাকি বলে মনে হচ্ছে। আমার মনে হয় যা আমি খুব সহজ ব্যবহারের ক্ষেত্রে মনে করি তাই এটিকে যথাসম্ভব পরিষ্কার রাখা পছন্দ করি (এবং সমান্তরাল উদাহরণগুলিতে কিছুই আমার সমস্যা বলে মনে হয় না।
কোন সাহায্য প্রশংসা হবে!
ইনপুট ডিরেক্টরি উদাহরণ:
> ls -l input_files/
total 13355
location1.txt
location2.txt
location3.txt
location4.txt
location5.txt
লিপি:
> cat proces_script.sh
#!/bin/sh
customScript -c 33 -I -file [inputFile] -a -v 55 > [outputFile]
আপডেট : নীচে ওলে এর উত্তর পড়ার পরে, আমি আমার নিজের সমান্তরাল বাস্তবায়নের জন্য হারিয়ে যাওয়া টুকরো একসাথে রাখতে সক্ষম হয়েছি। যদিও তার উত্তর দুর্দান্ত, এখানে আমার সংযোজন গবেষণা এবং আমি নোটগুলি নিয়েছি:
আমার সম্পূর্ণ প্রক্রিয়াটি চালানোর পরিবর্তে, আমি আমার পরিবেশে তার সমাধানটি প্রমাণ করার জন্য ধারণা কমান্ডের একটি প্রমাণ দিয়ে শুরু করতে পেরেছি। আমার দুটি পৃথক বাস্তবায়ন (এবং নোট) দেখুন:
find /home/me/input_files -type f -name *.txt | parallel cat /home/me/input_files/{} '>' /home/me/output_files/{.}.out
আমার ইনপুট ফাইল ডিরেক্টরিতে সমস্ত প্রযোজ্য ফাইলগুলি সন্ধান করতে (ls নয়, এটি সমস্যার কারণ হতে পারে) ব্যবহার করে এবং তার বিষয়বস্তু একটি পৃথক ডিরেক্টরি এবং ফাইলে পুনঃনির্দেশ করে। উপরের থেকে আমার সমস্যাটি পড়া এবং পুনর্নির্দেশ করা ছিল (প্রকৃত স্ক্রিপ্টটি সহজ ছিল), সুতরাং বিড়ালের সাথে স্ক্রিপ্টটি প্রতিস্থাপন করা ধারণার সূক্ষ্ম প্রমাণ ছিল।
parallel cat '>' /home/me/output_files/{.}.out ::: /home/me/input_files/*
এই দ্বিতীয় সমাধানটি ফাইলগুলি পড়তে সমান্তরালের ইনপুট ভেরিয়েবল দৃষ্টান্ত ব্যবহার করে তবে কোনও নবজাতকের জন্য, এটি ছিল আরও বিভ্রান্তিকর। আমার জন্য, একটি পাইপ ব্যবহার করে আমার প্রয়োজনীয়তা ঠিক ঠিক পূরণ করা গেল।