|
Консольная версия "Балаболки" (balcon.exe)
|
|
|
| tonio_k | Дата: Воскресенье, 22.03.2026, 13:23 | Сообщение #16 |
Группа: Пользователи
Сообщений: 184
Статус: Offline
| допустим, мне надо, что бы балкон после озвучивания каждого текстового файла делал некий лог файл о завершении простой пример:
Код balcon -f book1.txt -n Microsoft Dmitry echo "1">_done_book1.txt
balcon -f book2.txt -n Microsoft Dmitry echo "2">_done_book2.txt
balcon -f book3.txt -n Microsoft Dmitry echo "3">_done_book3.txt
но при таком раскладе, возникают "паузы" после каждого повторного запуска балкона.
Если я применяю
Код balcon -fl list.txt -n Microsoft Dmitry
пауз нет, читает ровно, но я не знаю, как сделать, что бы после каждого файла формировался некий лог файл.
Что можете посоветовать для решения задачи? 1) файлы читает без пауз 2) после каждого озвученного файла создавался файл лог
|
| |
| |
| balabolka | Дата: Воскресенье, 22.03.2026, 19:17 | Сообщение #17 |
 V.I.P.
Группа: Модераторы
Сообщений: 216
Статус: Offline
| tonio_k Не знаю, что можно сделать в такой ситуации. Программа сначала извлекает данные из всех текстовых файлов, формирует единый текст, а затем приступает к чтению вслух. Никаких меток внутри сформированного текста нет, и никакие промежуточные операции не предусмотрены.
|
| |
| |
| Lecron | Дата: Четверг, 26.03.2026, 15:23 | Сообщение #18 |
|
Группа: Пользователи
Сообщений: 32
Статус: Offline
| tonio_k, Может в сторону параметра -q глянуть? " Добавить приложение в очередь. Консольное приложение будет ждать, пока остальные экземпляры программы не завершат работу."
|
| |
| |
| tonio_k | Дата: Суббота, 28.03.2026, 13:25 | Сообщение #19 |
Группа: Пользователи
Сообщений: 184
Статус: Offline
| Цитата Lecron (  ) Может в сторону параметра -q глянуть? о! Спасибо что напомнили! Вчера только освоил запуск и контроль параллельно запущенных cmd процессов из lua. Плаваю ещё пока во всем этом))
|
| |
| |
| tonio_k | Дата: Суббота, 28.03.2026, 13:39 | Сообщение #20 |
Группа: Пользователи
Сообщений: 184
Статус: Offline
| Цитата -q Добавить приложение в очередь. Консольное приложение будет ждать, пока остальные экземпляры программы не завершат работу.
но сдаётся мне, что один балкон -q запускается, второй балкон -q ждёт первого, а вторые -q, третие -q ... сотые -q будут "ждать друг друга", пока вручную все не позакрываешь, и вот тогда, самый последний - сделает своё дело))) balabolka, Не понятно по какому принципу происходит слежение балкона за другими своими параллельно запущенными копиями?
|
| |
| |
| Lecron | Дата: Суббота, 28.03.2026, 13:59 | Сообщение #21 |
|
Группа: Пользователи
Сообщений: 32
Статус: Offline
| tonio_k, возможно. А если не запускать сразу все? На cmd это не выйдет точно, возможности power shell я настолько не знаю, а вот на Питоне нет проблем. Копать куда-то в эту сторону: Код with ThreadPoolExecutor(max_workers=2) as executor: for text in ('text1.txt', 'text2.txt', 'text3.txt'): speaker = executor.submit(func, text) speaker.add_done_callback(callback)
Два потока запускают функции. Пока один не завершится, третий файл не запустится в ожидание. то есть должно произойти что-то такое: text1 запущен и звучит, text2 запущен и ждет из-за -q. text1 завершен text2 дождался и звучит, text3 запущен и ждет. Лог можно писать через callback в основном потоке.
|
| |
| |
| tonio_k | Дата: Суббота, 28.03.2026, 14:21 | Сообщение #22 |
Группа: Пользователи
Сообщений: 184
Статус: Offline
| Цитата Lecron (  ) На cmd это не выйдет точно В lua, например, можно создать cmd.bat-ники запустить их друг за другом, в "параллельный полёт" я научился)) и отловить/ остановить конкретный поток по названию можно. У меня так конвертация ffmpeg в несколько потоков на выбор конвертирует аудио. (К стати, после 12 и до 24 потоков у меня скорость уже почти не растёт - ближе к погрешности ) соответственно, как cmd.bat отработает, по завершению - лог файл создаст - доложит, так сказать, о своём завершении. и это событие (проявление ожидаемого файла) можно отловить Но это все не имеет смысла, если -q в балконе , вдруг, не понимает последовательность очереди. А это уже только автор балкона может подсказать как этот -q по своей сути работает
|
| |
| |
| Lecron | Дата: Суббота, 28.03.2026, 14:35 | Сообщение #23 |
|
Группа: Пользователи
Сообщений: 32
Статус: Offline
| tonio_k, Так суть в том, чтобы запускать не все тексты в паралельный полет и надеяться на -q, а только 2 — один говорит, второй ждет. Отговорил первый, заговорил второй, запустили третий. Отговорил второй, заговорил третий, запустили четвертый. И лог писать отдельно. Какая бы это ни была быстрая операция, она занимает время. В моем варианте, задержка определяется исключительно эффективностью отслеживания завершения самим балконом. Других задержек нет.
|
| |
| |
| tonio_k | Дата: Суббота, 28.03.2026, 16:08 | Сообщение #24 |
Группа: Пользователи
Сообщений: 184
Статус: Offline
| Цитата Lecron (  ) а только 2 — один говорит, второй ждет. А! вот как! Точно! Надо попробовать. Элементарно, но как то в голову не пришло. Я всё в сторону "буферизации", когда не на +1 шаг, а на +2..+5 шагов вперед запускать параллельные процессы. Надо только буфер на +1 переделать и попробовать. Спасибо!
Цитата И лог писать отдельно это я неудачно выразился. Мне что бы cmd после балкона любой файл создавал по завершению - что бы отследить факт завершения, и на основе появления файла(пустышки) запустить следующий поток. Одно беспокоит, (собственно, поэтому я и отмел в самом начале идею с шагом +1, когда размышлял перед тем как понять, в каком направлении решать задачи). Допустим, старый ПК, короткий диалог, + еще на 10-ой скорости. Я запустил 2 процесса, жду как отработает первый, и хоп, оба отработали... два файла уведомления, что процесс завершен... И тут если все не слетит, то точно ощутимая пауза возникнет, причем, "технического" характера. Но сейчас думаю, зря загонялся. Не в том направлении пошел... Будем думать переписывать...
|
| |
| |