imagemagick создает одно большое изображение, складывая тысячи изображений одинаковой ширины?

Если у вас установлен GNU Parallel, вы можете:

doit() {
  file1="$1"
  file2="$2"
  output="$3"
  awk 'NR == FNR{a[$1]=$2; b[$1]=$3; next}
      /:/ || !NF{print; next}
     {print $1, $2*a[$1], $2*b[$1]}' "$file2" "$file1" > "$output"
}
export -f doit

# If all filenames fit on a command line:
parallel --xapply doit {1} {2} {1/.}{2/.}.out ::: ../mo/?*e.log ::: ../excited/?*d.log
# With newer versions you can do:
parallel  doit {1} {2} {1/.}{2/.}.out ::: ../mo/?*e.log :::+ ../excited/?*d.log

# If you do not like the {/.} you can do:
parallel doit {1} '{= s/e.log/d.log/;s:/mo/:/excited/:; =}' '{=s/.log/.out/;s:^../mo/::;=}' ::: ../mo/?*e.log

# If all the files do not fit on the command line (because you have thousands):
finda() { find ../mo/ -name '*e.log'; }
findb() { find ../excited/ -name '*d.log'; }

parallel --xapply doit {1} {2} {1/.}{2/.}.out :::: <(finda) <(findb)
parallel doit {1} {2} {1/.}{2/.}.out :::: <(finda) ::::+ <(findb)
finda | parallel doit {1} '{= s/e.log/d.log/;s:/mo/:/excited/:; =}' '{=s/.log/.out/;s:^../mo/::;=}'

Он будет запускать одно задание на каждое ядро . Если вы предпочитаете одно задание за раз, замените parallel на parallel -j1 .

GNU Parallel - это общий распараллеливатель, который упрощает параллельное выполнение заданий на одной или нескольких машинах, к которым у вас есть доступ по ssh. Часто может заменить на .

Если у вас есть 32 различных задания, которые вы хотите запустить на 4 процессорах, простой способ распараллеливания - запустить 8 заданий на каждом процессоре:

Simple scheduling

GNU Parallel вместо этого порождает новый процесс, когда один из них завершается, - оставляя процессоры активными. и, таким образом, экономия времени:

GNU Parallel scheduling

Установка

Если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить персональную установку, для которой не требуется root-доступ. Это можно сделать за 10 секунд, выполнив следующие действия:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

Другие варианты установки см. http://git.savannah.gnu.org/cgit/parallel.git/tree/README

Подробнее

См. Другие примеры: http://www.gnu.org/software/parallel/man.html

Посмотрите вступительные видеоролики: https://www.youtube.com/playlist?list= PL284C9FF2488BC6D1

Ознакомьтесь с руководством: http://www.gnu.org/software/parallel/parallel_tutorial.html

Подпишитесь на список адресов электронной почты, чтобы получить поддержку: https: // lists .gnu.org / mailman / listinfo / parallel

5
16.07.2011, 16:42
0 ответов

Теги

Похожие вопросы