@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Работа в многопотоке
-
Такая ситуация, работаю с номером и ID активацией номера.
Первый поток , беру номеру, выпаршиваю ид активации в отдельную переменную, номер в другую.
Всё хорошо , первый поток проработал.
Запускаю многопоток в функции, чтобы ещё 3 потока запустить.
Везде ввожу номер телефона (он везде один), затем моя задача получить для каждого потока код.
Так как ид активации один и вывел я его в глобалку кстати, также как и номер телефона для других потоков.
Коды бывают мешаются, т.е от 5 потока может получить 2 поток код, от 3 потока может получить код поток 4 и т.д
Как этого можно избежать? -
@kullq2 добавить глобальную переменную.
если(if) значение его = 1(true) - то можно делать запрос. переводим в 0(false) до получения кода, после обратно в 1(true)
иначе(else) ждем энное время и еще раз проверяем.это лучше засунуть в цикл while с условием true
-
@tet-vivi said in Работа в многопотоке:
@kullq2 добавить глобальную переменную.
если(if) значение его = 1(true) - то можно делать запрос. переводим в 0(false) до получения кода, после обратно в 1(true)
иначе(else) ждем энное время и еще раз проверяем.это лучше засунуть в цикл while с условием true
Скорее здесь проблема у меня как передавать эту инфу между потоками.
Как настроить правильно if и передавать инфу между потоками какому можно, а какому нельзя делать сейчас запрос кода.