@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Не получается распределить потоки в зависимости от ресурсов
-
Приветствую. Такая проблема. Создаю ресурс в онапликейшн, потом запускаю скрипт в несколько потоков. Каждый поток работает так: задержка в зависимости от потока(стартуют не синхронно), добавляет в ресурс номер потока, и проверяет первый элемент ресурса, если он не равен номеру потока, то ждет в бесконечном цикле с задержкой, если равен , от идет выполнять действия, после добавляет в ресурс номер потока, и удаляет(насколько я понимаю, добавляет он в конец, а удаляет сначала) и возвращается к проверке на соответствие номера потока и первого элемента ресурса.Залил тестовый на облако https://cloud.mail.ru/public/47sb/444QhnWuG .По факту, не получается заставить работать потоки по очереди .
-
@maks_frai said in Не получается распределить потоки в зависимости от ресурсов:
Создаю ресурс в онапликейшн, потом запускаю скрипт в несколько потоков.
Может вам вначале стоило узнать как работает онапликейшенстарт?
-
-
Спасибо, тоже решил через изменение списка в глобальной переменной. Опишу решение, вдруг кому пригодится. Сама проблема была в том , чтобы заставить потоки работать по очереди ,один поток сделал действие в браузер, передал очередь другому и так по кругу, и в случае если один из потоков отвалился или закончил выполнение , то он не добавляется в очередь и остальные потоки работают дальше, решил это добавлением в конец глобального списка, после выполнения-номера потока, а после удаление-первого(текущего ) значения из глобального списка, то есть если поток отвалился, то не встал в очередь в конец, но удалился с первого места в списке , а в это время остальные потоки смотрят в бесконечном цикле первый элемент глобального списка, и когда он становится равным номеру потока(предыдущий закончил и удалил первый элемент) то цикл разрывается и идет выполнение.
-
ребятишки помогите взрослой тете.... никак не получается распледелить русурс в многопотоке:
https://ibb.co/RYLGtQT
после регистрации на сайте каждый поток начинает отрабатывать первый элемент ресурса, потом второй элемент и так далее. Мне необходимо чтобы поток брал первую строку (в данном случае
это url) второй поток брал вторую строку.... или строки чтобы удалялись....? Заранее спасибо! -
@victori said in Не получается распределить потоки в зависимости от ресурсов:
ребятишки помогите взрослой тете.... никак не получается распледелить русурс в многопотоке:
https://ibb.co/RYLGtQT
после регистрации на сайте каждый поток начинает отрабатывать первый элемент ресурса, потом второй элемент и так далее. Мне необходимо чтобы поток брал первую строку (в данном случае
это url) второй поток брал вторую строку.... или строки чтобы удалялись....? Заранее спасибо!Уменьшите количество успешных и неудачных использований ресурса до 1.
-
к сожалению не помогло... я вот все никак не пойму:
- я захожу на сайт под логином и паролем (регистрация одного аккаунта-OnAplStart)
- после этого я начинаю перебирать url и делаю на страницах пользователей например комменты. Есть ли какая то разница для многопоточности делаю ли я эти комменты с 1 акка или с разных 10 аккаунтов)
-
@victori said in Не получается распределить потоки в зависимости от ресурсов:
к сожалению не помогло... я вот все никак не пойму:
- я захожу на сайт под логином и паролем (регистрация одного аккаунта-OnAplStart)
- после этого я начинаю перебирать url и делаю на страницах пользователей например комменты. Есть ли какая то разница для многопоточности делаю ли я эти комменты с 1 акка или с разных 10 аккаунтов)
Функция OnApplicationStart выполняется один раз до старта работы скрипта. Остальные потоки не знают о данных в этой функции, данные необходимо передавать через ресурсы, либо через глобальную переменную
мне кажется проблема в ресурсе, с foreach в однопотоке вообшще проблем не было.... я так понимаю foreach с многопотоком не работает?
Сами инструменты работают исправно, вы бы приложили тестовый проект того, что пытаетесь сделать
-
а незьзя просто прогнать текстовый документ со списком url через foreach? чтобы записи в txt документе удалялись? и тем самым было бы осуществлено распределение ресурса-в данном случае url между потоками?
у еня получается удалять использованные записи из ресурса, вот только я немогу никак сопоствить созданный ресурс с галочкой на удаление и файл txt? -
@victori said in Не получается распределить потоки в зависимости от ресурсов:
а незьзя просто прогнать текстовый документ со списком url через foreach? чтобы записи в txt документе удалялись? и тем самым было бы осуществлено распределение ресурса-в данном случае url между потоками?
у еня получается удалять использованные записи из ресурса, вот только я немогу никак сопоствить созданный ресурс с галочкой на удаление и файл txt?Вы это хотите сделать? тестовый скрипт
-
@victori said in Не получается распределить потоки в зависимости от ресурсов:
вроде бы все заработало спасибо! Только комменты пустые Bas пишет в логе что адрес отработан и в окне браузера я вижу что результат положительный, а начинаю на сайте проверять коментами и ни пахнет. (модерации там никакой нет) 🤔
Вы сейчас пишете скрипт, он прямо перед вами, вы продумываете логику, пытаетесь её реализовать, у вас что то не получается, вы спрашиваете об этом на форуме. Но у нас нет вашего скрипта, нет вашей задачи и мы не знаем какую логику вы пытаетесь организовать. Это похоже на то, если я на улице спрошу у прохожего "Я правильно иду?"