@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Помогите понять в чем проблема
-
@Fox
спасибо. Но это завершение, он же не перезапустится сам.
Задача в том, чтобы допустим я оставил пк работать и скрипт не вылетал, а просто перезапускался без моего участия, я конечно могу заходить удаленно и проверять, но не всегда есть инет в отъезде, да и это не удобно) -
@Dodok said in Помогите понять в чем проблема:
Эта кака, помогает не хапануть вирусов разных мастей. Не хочется гробить железо, ради убеждений кого то там.
Не хапнуть вирусов помогает примерное поведение :) а что nod32 запретили ? или там религия ....
-
@Bigshow8 said in Помогите понять в чем проблема:
@Fox
спасибо. Но это завершение, он же не перезапустится сам.
Задача в том, чтобы допустим я оставил пк работать и скрипт не вылетал, а просто перезапускался без моего участия, я конечно могу заходить удаленно и проверять, но не всегда есть инет в отъезде, да и это не удобно)То, что вы говорите, это пример неправильно созданной логики работы, больше смахивающий на огород. Но если очень нужно, вы можете запускать скрипт в режиме
--silent, завершать его через действие "Прервать скрипт", а перезапускать скрипт можно с помощью действия "Запустить Процесс" отключенной опцией "Ждать завершения" перед завершениемTIMEOUT /T 60 start BrowserAutomationStudio.exe -
@Bigshow8 БАС недолюбливает метки, поэтому для начала не используйте их для выхода из циклов, функций и игноров ошибок. Вам я посоветую либо попробовать переписать скрипт вообще без использования меток - это повысит смекалистось и вообще будет полезно как для программиста, либо же избавиться от функций и сделать всё в Main, скрипт у вас небольшой, метки вы освоили... Потом обнаружите популярные и законченные участки кода, которые можно перенести в функции и понесётся.
-
@Vituskosoy
Хорошо, спасибо, буду работать над этим и над собой)) -
@Fox Благодарю за помощь.
Я понимаю что там "огород", но пока не хватает знаний исправить это, и хотя бы на время хотелось бы реализовать тупо перезапуск бота при ошибках.и даже уже неудобно надоедать вопросами, но вот про это еще не "слышал" (--silent), нельзя ли чуть подробнее подсказать как это сделать?
т.е. вылезла ошибка - там действие Прервать скрипт, затем нужно запустить процесс .... И как там правильно сделать? Пожалуйста, если не трудно, ткните пальцем)) -
@Bigshow8 said in Помогите понять в чем проблема:
@Fox Благодарю за помощь.
Я понимаю что там "огород", но пока не хватает знаний исправить это, и хотя бы на время хотелось бы реализовать тупо перезапуск бота при ошибках.и даже уже неудобно надоедать вопросами, но вот про это еще не "слышал" (--silent), нельзя ли чуть подробнее подсказать как это сделать?
--silentнужен что бы при запуске не нужно было нажимать "ок" перед стартом скрипта и после закрытия в трее не оставалось значков. Примеры применения можете найти по форуму, это не сложнот.е. вылезла ошибка - там действие Прервать скрипт, затем нужно запустить процесс .... И как там правильно сделать? Пожалуйста, если не трудно, ткните пальцем))
- Помещаете всё в игнор ошибок и если ошибка возникает, то BAS перемещает точку выполнения после блока игнора ошибок
- В условии за блоком помещаете действие "Запустить Процесс"
- Затем выполняете действие "Прервать скрипт"
-
@Fox Еще раз спасибо вам, большое спасибо) но так как с этим не сталкивался еще, то не до конца понимаю, куда все-таки ставить сие --silent, нужно какой-то файл создать или прям в БАСе, в запуске процессов прописать как-то, что-то с этим --silent ?)
Нашел вот эту статью, подходит ? https://community.bablosoft.com/topic/4347/батник-для-перезапуска-bas -
@Bigshow8 said in Помогите понять в чем проблема:
@Fox Еще раз спасибо вам, большое спасибо) но так как с этим не сталкивался еще, то не до конца понимаю, куда все-таки ставить сие --silent, нужно какой-то файл создать или прям в БАСе, в запуске процессов прописать как-то, что-то с этим --silent ?)
Нашел вот эту статью, подходит ? https://community.bablosoft.com/topic/4347/батник-для-перезапуска-basСоздайте ярлык или батник и в нём укажите дополнительный параметр.
https://www.google.com/search?q=site%3Ahttps%3A%2F%2Fcommunity.bablosoft.com+--silentЛибо при компиляции выберете опцию "Копировать выполняемый файл для запуска без интерфейса"
