অনুক্রমিক: for i in {1..1000}; do do_something $i; done
- খুব ধীর
সমান্তরাল: for i in {1..1000}; do do_something $i& done
- খুব বেশি বোঝা
সমান্তরালভাবে কমান্ডগুলি কীভাবে চালানো যায়, তবে এর চেয়ে বেশি নয়, উদাহরণস্বরূপ, প্রতি মুহূর্তে 20 টি উদাহরণ?
এখন সাধারণত হ্যাকের মতো ব্যবহার করা for i in {1..1000}; do do_something $i& sleep 5; done
হয় তবে এটি কোনও ভাল সমাধান নয়।
আপডেট 2 : গৃহীত উত্তরগুলিকে একটি স্ক্রিপ্টে রূপান্তরিত: http://vi-server.org/vi/parallel
#!/bin/bash
NUM=$1; shift
if [ -z "$NUM" ]; then
echo "Usage: parallel <number_of_tasks> command"
echo " Sets environment variable i from 1 to number_of_tasks"
echo " Defaults to 20 processes at a time, use like \"MAKEOPTS='-j5' parallel ...\" to override."
echo "Example: parallel 100 'echo \$i; sleep \`echo \$RANDOM/6553 | bc -l\`'"
exit 1
fi
export CMD="$@";
true ${MAKEOPTS:="-j20"}
cat << EOF | make -f - -s $MAKEOPTS
PHONY=jobs
jobs=\$(shell echo {1..$NUM})
all: \${jobs}
\${jobs}:
i=\$@ sh -c "\$\$CMD"
EOF
নোট করুন যে এটি কার্যকর করতে আপনাকে "i =" এর আগে 2 টি ট্যাব দিয়ে 8 টি স্পেস প্রতিস্থাপন করতে হবে।