@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Глобальная переменная в интерфейсе
-
Всем привет, хочу выводить счетчик с глобальной переменной в интерфейс.
Использую такой скрипт:setInterval(function() { Api.GetGlobalVariable("COUNTER").then(function(res) { $("#SuccessSend").html(res) }) }, 1000);Работает как надо, но вот когда я стопаю скрипт получаю пустое значение.
Подскажите пожалуйста как правильно оформить код, чтобы при завершении скрипта оставалось последнее значение переменной. -
@dmitr said in Глобальная переменная в интерфейсе:
Всем привет, хочу выводить счетчик с глобальной переменной в интерфейс.
Использую такой скрипт:setInterval(function() { Api.GetGlobalVariable("COUNTER").then(function(res) { $("#SuccessSend").html(res) }) }, 1000);Работает как надо, но вот когда я стопаю скрипт получаю пустое значение.
Подскажите пожалуйста как правильно оформить код, чтобы при завершении скрипта оставалось последнее значение переменной.Можно создать функцию в событии Event stop останавливающее счётчик. Либо просто проверять переменную на пустоту.
setInterval(function() { Api.GetGlobalVariable("COUNTER").then(function(res) { if(typeof(res) != "undefined") $("#SuccessSend").html(res); }) }, 1000); -
@fox не помогло, все равно после стопа получаю пустоту.
У меня всё сработало, оказывается api возвращает пустое значение переменной:
setInterval(function() { Api.GetGlobalVariable("COUNTER").then(function(res) { if(res != "") $("#SuccessSend").html(res) }) }, 1000);
Но setInterval() лучше остановить по завершению скрипта, я бы использовал такой код:
var intervalID = setInterval(function() { Api.GetGlobalVariable("COUNTER").then(function(res) { if(res != "") $("#SuccessSend").html(res) }) }, 1000);а в событие событии Event stop добавил бы очистку таймера clearInterval(intervalID);
if(EventType == "stop") { clearInterval(intervalID); UIkit.tab($("#GlobalTabsHeader")[0]).show(1); $("#CardStatusRunning").hide() $("#CardStatusStopped").show() $("#ThreadsRunning").html("0") $("#BrowserNumber").html("0") $("#BrowserManualNumber").html("0") $("#BrowserManualMessage").hide() }@dmitr said in Глобальная переменная в интерфейсе:
@fox если не сложно, то подскажите пожалуйста, можно ли узнать изменение числа глобальной переменной и задать условие?
Например если оно стало больше на 1, то выполнять что то.На сколько я знаю api BAS не поддерживает событие onchange. Тут только так же циклом проверять. Можно в самой функции:
var intervalID = setInterval(function() { Api.GetGlobalVariable("COUNTER").then(function(res) { if(res != "") $("#SuccessSend").html(res) if(res == 5) alert("Здесь могла быть ваша реклама") }) }, 1000);или запускать функцию внутри функции:
function advertising(q){ alert(q) } var intervalID = setInterval(function() { Api.GetGlobalVariable("COUNTER").then(function(res) { if(res != "") $("#SuccessSend").html(res) if(res == 5) advertising("Здесь могла быть ваша реклама") }) }, 1000);или внутри цикла изменять переменную, за которой следит другая функция. В общем как душе угодно
:D -
По второму вопросу немного, не то, но спасибо.
Мне нужно проверить счетчик и если он увеличился хотя бы на единицу, то выполнять код.
Обычное сравнение с числом не подойдет
if(res == 5) alert("Здесь могла быть ваша реклама")Счетчик будет увеличиваться каждый раз и мне нужно отследить каждое его увеличение.
-
@dmitr said in Глобальная переменная в интерфейсе:
По второму вопросу немного, не то, но спасибо.
Мне нужно проверить счетчик и если он увеличился хотя бы на единицу, то выполнять код.
Обычное сравнение с числом не подойдет
if(res == 5) alert("Здесь могла быть ваша реклама")Счетчик будет увеличиваться каждый раз и мне нужно отследить каждое его увеличение.
Так?
var check var intervalID = setInterval(function() { Api.GetGlobalVariable("COUNTER").then(function(res) { if(res != "") $("#SuccessSend").html(res) if(res != check) { alert("Ура, значение изменилось") check = res }) }, 1000); -
Привет всем! Подскажите а как в функции в БАСе получить [[COUNTER]] ? в кубике из примера выше
-
@cybernatic said in Глобальная переменная в интерфейсе:
Привет всем! Подскажите а как в функции в БАСе получить [[COUNTER]] ? в кубике из примера выше
В каком кубике из примера выше? Все примеры кода в этой теме указаны для веб интерфейса