@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Не переходит в основную функцию, после выполнения условия в другой функции
-
Всем привет, в общем делал скрипт и столкнулся с такой проблеммой.
У меня есть функция, в ней есть цикл foreach в нем цикл for

Когда срабатывает условие срабатывает эта функция

Получает что, идет загрузка если не срабатывает то на else она повторяется снова. Когда повторилось то находит элемент и срабатывает условие if, оно срабатывает, срабатывает та функция что в нем

И после того как функция эта сработала, должно перекидывает меня в цикл который на 1 скрине, но получается следующее раз через раз оно не перекидывает, срабатывает все это что выделенное

И просто скидывается вся работа скрипта. и она не переходит в цикл for и не выводит даже сообщение которое ниже его.
Если использовать метки, то получается что метка сработала перекинула в for и все, работа остановилась вообще, цикл остановился.
Так же во ЛОГ ничего вообще не выводится. Ведь по факту должна выводится ошибка скрипта или проекта
В чем проблема? -
@sashf1999 Нельзя метками переходить между функциями...
-
@denis_krsk said in Не переходит в основную функцию, после выполнения условия в другой функции:
@sashf1999 Нельзя метками переходить между функциями...
Почему это. Можно же...
-
@forall Можно, а потом получать удовольствие от таких багов тоже можно. Нельзя потому что пропускается инициализация функции и интерпретатор понятие не имеет, что он выполняет функцию.
-
@sashf1999 Что помочь? Вам ответили причину. Переделайте скрипт. Что бы метки если вы их используете были не в функциях, а до них. А функции вызывались отдельно. Ну или по проверке. Я бы например проверку капчи вынес в отдельную с проверкой если она универсальна по всему телу скрипта.
Что бы так не путаться ставьте метки только до начала выполнения функции, а вот перейти к метке можно где угодно.
-
@sashf1999 Тогда надо смотреть сам скрипт. Попробуйте обратится к @Fox В личке я так понимаю это не тот скрипт который стоит разбирать на публике. Значит где то у вас сидит ошибка. Возможно например что элементы меняются при перезагрузке. И он не ловит их такое бывает.
-
@Denis_krsk
Нельзя метками переходить между функциями...
Оказывается можно
:DНо без глюков можно переходить только внутри одной функции.Вот тестовый скрипт.
Логика такая, скрипт начинает работу с main, заходит в функцию test_0, там стоят две метки, одна вызывается тут же для увеличения переменной в цикле. После прохождения функции test_0 мы возвращаемся в main, и из неё переходим в функцию test_1, в ней мы переходим по метке в функцию test_0. Но после выполнения функции test_0 скрипт завершается, не возвращаясь ни в test_1, ни в main.
Если бы мы просто вызывали функции, стек бы сохранялся и всё работало как и ожидается.
Основной косяк скрипта был вот в чём: В двух разных функциях ставились и вызывались метки с одинаковым именем, в результате ни чего не происходило и скрипт просто завершался.
Вот тестовый скрипт для наглядности.
Метки зло, с ними проще создать баг, чем с циклом или вызовом функции. Хоть и @support говорит, что это мощный инструмент, я бы не советовал новичкам его использовать повсеместно.
-
@fox said in Не переходит в основную функцию, после выполнения условия в другой функции:
что это мощный инструмент, я бы не советовал новичкам его использовать повсеместно.
Бгг я с этим инструментом "нахавался" в свое время. Мало меток будут косяки, много меток будешь репу чесать а куда она ведет... особенно действия повторяются, но не совсем "повторяются". Сейчас проще. Список меток можно всегда увидеть "скопом" за что спасибо @support у. Бас все больше и больше становится юзабельным для новичков. Но блин это нарягает когда привык "как раньше"))
-
-
@Denis_krsk
А я разве не это написал?Выражение "нельзя между" и "можно только внутри" разве не равны по смыслу?)) Или я чего-то не понял :D
Да, ты так же написал
:D, нууу, а что ты хотел, я полтора суток не спал, ладно хоть причинно-следственные связи работали )) -
-
Метки зло
49 меток, гоняю кран в 30.000 аккаунтов и 500 потоков на 5 серверах. Багов нет :D
Я лишь высказал своё мнение, каждый вправе
городить свой огородреализовывать свою логику как вздумается:D
Для тех кто активно пользуется метками советую обратить внимание на два выше приведёных мною факта:
- Не называть метки одинаково
- Не перепрыгивать из функции в функцию через метки
-
- Одинаковые метки это само собой. Это создаст дикие баги.
- Перепрыгивать из функции в функции можно, но более чем 1 раз туда-сюда. Хотя у меня скрипт построен таким образом, что если что-то затупит, что даже не страшно и это. Одна метка не сработает - сработает другая.
-
Да можно все, просто потом не надо писать, помогите, BUG! )))
-
@denis_krsk На каждый баг должен быть анти-баг :D У меня на каждую проверку еще 3 проверки и 4 критическая (перезапуск бота). Хотя до такого доходит редко, но всё же. Это мир ботоводства, здесь не предсказуемо всё.
Особенно когда скрипт очень долго без перезапуска работает. Мой рекорд 23 дня.