|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Распаралелить обработку изображений |
|
CMD/BAT - [решено] Распаралелить обработку изображений
|
Новый участник Сообщения: 44 |
Профиль | Отправить PM | Цитировать Здравствуйте, мне нужна помощь в решении следующей задачи:
Надо периодически обрабатывать серии снимков накладывая на них серийный номер. (на каждое изображение наносится номер начиная с единицы и так далее) Выглядит очень упрощённо так: Оказалось что обработка изображений задача весьма долгая. На обработку ~400 картинок уходит ~30 минут. (Там не просто текст приклеивается а хитрым образом обрабатывается для контраста.) У машинки на которой выполняется эта задача четыре ядра и я подумал нет ли возможности распаралелить задачу на четыре потока. Основная проблема что количество картинок всегда разное и нужен серийный номер. Я батниках не совсем новичок но как решать подобную задачу не знаю. Нужна помощь хотя бы на уровне алгоритма. |
|
Отправлено: 21:22, 04-01-2020 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать с помощью cmd получится разве что разделить на 4 части для действий какого-то инструмента разделяющего ядра и понятно что это наоборот - еще увеличит общее время выполнения задачи.
|
Отправлено: 21:50, 04-01-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать Можно попробовать через ffmpeg с параметром -threads.
|
------- Отправлено: 22:37, 04-01-2020 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать ateka, картинки какой общий объём занимают? Можете ли Вы их выложить (пока не выкладывайте, вопрос задан как теоретический)?
Кроме того, покажите полный код Вашего пакетного файла. Всё ж, полчаса на наложение текста на 400 изображений (если они не по полгигабайта), на мой взгляд, многовато. P.S. И что значит «серийный номер»? В чём его отличие от просто порядкового номера? |
Отправлено: 00:27, 05-01-2020 | #4 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Iska, я сначала тоже так думал но похоже в эту сторону копать бесполезно.
Картинки меньше 1М и дело именно в обработке. Приведу абстрактный пример: Посмотреть картинку:
Как видно текст отлично виден на любом фоне но его обработка занимает много ресурсов. Код для примера взят с сайта ИМ. Скрытый текст
:: https://www.imagemagick.org/Usage/annotating/ convert -size 100x14 xc:none -gravity center \ -stroke black -strokewidth 2 -annotate 0 'Faerie Dragon' \ -background none -shadow 100x3+0+0 +repage \ -stroke none -fill white -annotate 0 'Faerie Dragon' \ dragon.gif +swap -gravity south -geometry +0-3 \ -composite anno_fancy.jpg Я ещё возможно спрошу на оффоруме но шансы невелики. -------------------------------------------------------------------------------------------------- Я нагуглил следующее решение проблемы. Есть такая утилита https://github.com/lordmulder/MParallel Простая как бублик. Пример кода: Скрытый текст
echo. >Build_01X1.txt
for %%a in (.\temp\*.png) do ( echo magick "%%a" -flip ".\output\%%~nxa" >>Build_01X1.txt ) MParallel --input=Build_01X1.txt Визуально видно что отрабатывает по четыре процесса. Но прирост скорости даёт только вдвое. На машинке камень 2х2. Видимо маджик умеет в гипертрединг. Наверное вопрос можно считать решённым. Но мне в принципе интересно каким образом распаралеливают задачи для батников. Например я уверен что у уважаемого Мегаломана есть изящное решение. Интересена не конкретика а алгоритм. |
|
Отправлено: 08:52, 05-01-2020 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата ateka:
Цитата ateka:
Цитата ateka:
и посмотрите, есть ли OpenMP во Features. А так: Цитата:
Цитата ateka:
|
|||||
Отправлено: 10:25, 05-01-2020 | #6 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
Цитата Iska:
Цитата Iska:
|
||||
Отправлено: 19:43, 06-01-2020 | #7 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата ateka:
@echo off if "%~1" neq "" (call %*& exit /b) call :# :#1 call :# :#2 call :# :#3 call :# :#4 exit /b :# start "" cmd /c "%~f0 %*" exit /b :#1 title C1 start "" "process1" exit /b :#2 title C2 start "" "process2" exit /b :#3 title C3 start "" "process3" exit /b :#4 title C4 start "" "process4" exit /b |
|
Отправлено: 21:20, 06-01-2020 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата ateka:
Цитата ateka:
Цитата ateka:
|
|||
Отправлено: 22:07, 06-01-2020 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Помогите организовать циклическую обработку файлов | interestingyy | Скриптовые языки администрирования Windows | 7 | 30-01-2018 12:58 | |
оцените пожалуйста обработку до и после. | offimpulse | Видео и аудио: обработка и кодирование | 1 | 10-04-2017 21:19 | |
HDD - Восстановление локального диска Д. Прервал обработку раздела и сломал раздел Д. | frozenbit3z | Накопители (SSD, HDD, USB Flash) | 0 | 17-06-2015 22:18 | |
Службы - Как задействовать обработку autorun.inf (после обновления пропала) | DeathMan2k4 | Microsoft Windows Vista | 1 | 13-03-2012 14:53 | |
CMD/BAT - [решено] Как осуществить циклическую обработку параметров %1,%2... в bat-файле | leonaft | Скриптовые языки администрирования Windows | 7 | 14-04-2010 14:03 |
|