Как добавить(+1)/уменьшить(-1) количество потоков в процессе выполнения?

  • Автор темы Автор темы Enigma
  • Дата начала Дата начала
А максимум потоков можно регулировать из кода? На подобии как добавлять исполнения.

Я так понимаю можно установить все настройки для шаблона вместе с максимумом потоков, но нет возможности регулировать максимум потоков отдельно.

Посмотреть вложение 40598


Для увеличения максимального кол-ва потоков можно использовать такой C#-код:

C#:
Развернуть Свернуть Копировать
var zppath = Environment.ExpandEnvironmentVariables("%ZennoPosterCurrentPath%");
var p = System.Diagnostics.Process.Start(zppath+"\\TasksRunner.exe", "-o SetThreads 15 -names имя_проекта_в_ЗП");
p.WaitForExit();

Где 15 - это кол-во потоков.
 
Для увеличения максимального кол-ва потоков можно использовать такой C#-код:

C#:
Развернуть Свернуть Копировать
var zppath = Environment.ExpandEnvironmentVariables("%ZennoPosterCurrentPath%");
var p = System.Diagnostics.Process.Start(zppath+"\\TasksRunner.exe", "-o SetThreads 15 -names имя_проекта_в_ЗП");
p.WaitForExit();

Где 15 - это кол-во потоков.

взеннобокс это будет работать?
 
  • Спасибо
Реакции: Castaneda
  • Спасибо
Реакции: Sergodjan
Сталкнулся с такой задачей... мне требуется при достижении определенного счетчика увеличивать на один поток.

var id = Guid.Parse(project.TaskId);
ZennoPoster.AddTries(id, c);

поставил код, но он увеличивает сначала на один поток, а потом по одному на каждый запущенный поток))) Как сделать лучше братишки, чтобы при 8ми запущенных все равно на 1 поднимал?
 
Сталкнулся с такой задачей... мне требуется при достижении определенного счетчика увеличивать на один поток.

var id = Guid.Parse(project.TaskId);
ZennoPoster.AddTries(id, c);

поставил код, но он увеличивает сначала на один поток, а потом по одному на каждый запущенный поток))) Как сделать лучше братишки, чтобы при 8ми запущенных все равно на 1 поднимал?

прое**лся с этим вопросом 100500 часов.

решение:
C#:
Развернуть Свернуть Копировать
if (project.Variables["Auto"].Value == "True")
        {
            var zppath = Environment.ExpandEnvironmentVariables("%ZennoPosterCurrentPath%");
            var p = System.Diagnostics.Process.Start(zppath+"\\TasksRunner.exe", "-o SetThreads 3 -names Project1234");
            p.WaitForExit();
        }

Устанавливает 3 потока для проекта Project1234
Запускать в ZP

Как узнать текущее кол-во потоков уже найдешь на форуме легко.
Там берешь инфу по названию проекта и парсишь регуляркой оттуда.
 
  • Спасибо
Реакции: spbalexpiter
прое**лся с этим вопросом 100500 часов.

решение:
C#:
Развернуть Свернуть Копировать
if (project.Variables["Auto"].Value == "True")
        {
            var zppath = Environment.ExpandEnvironmentVariables("%ZennoPosterCurrentPath%");
            var p = System.Diagnostics.Process.Start(zppath+"\\TasksRunner.exe", "-o SetThreads 3 -names Project1234");
            p.WaitForExit();
        }

Устанавливает 3 потока для проекта Project1234
Запускать в ZP

Как узнать текущее кол-во потоков уже найдешь на форуме легко.
Там берешь инфу по названию проекта и парсишь регуляркой оттуда.

ок. спасибо))

Смотри у меня зацикленный шаблон. Если я скажем разогнал шаблон до 4 потоков (и исполнений, т.к. у меня цикл), а сейчас работает в 10 потоков, то не пойму как сделать. У меня ставится поток, но так как шаблон в цикле не останавливаются до нужного значения потоки, которые уже в работе. ;)
 
ок. спасибо))

Смотри у меня зацикленный шаблон. Если я скажем разогнал шаблон до 4 потоков (и исполнений, т.к. у меня цикл), а сейчас работает в 10 потоков, то не пойму как сделать. У меня ставится поток, но так как шаблон в цикле не останавливаются до нужного значения потоки, которые уже в работе. ;-)

Можешь перечитать то, что написал и сделать рерайт "для человеков". Нихрена не понятно.

У тебя не запустится больше повторений, чем в задании.
 
Можешь перечитать то, что написал и сделать рерайт "для человеков". Нихрена не понятно.

У тебя не запустится больше повторений, чем в задании.

У меня запущенно 10 потоков и 10 исполнений. Шаблон работает в цикле, т.е. он не остановится пока не обработает все акки, к примеру. Мне надо, после определенного события снизить поток и исполнение до 3х, т.. чтобы в эту минуту исполнялось только 3 потока. Если я делаю это, любым из вышеописанных методом, то устанавливается потоки 3, н ов работе остаются 10, т.к. шаблон работает в цикле))) Так понятнее?
 
Ну так надо не через добавление потоков извращаться, а останавливать лишние или сделать все же по человечески - первый запуск устанавливает кол-во исполнений равное колву аккаунтов которые надо обработать, а мак. число потоков варьировать. Ну и шабы не зацикленные, а отрабатывающие ОДИН акк за один запуск.
 
Ну так надо не через добавление потоков извращаться, а останавливать лишние или сделать все же по человечески - первый запуск устанавливает кол-во исполнений равное колву аккаунтов которые надо обработать, а мак. число потоков варьировать. Ну и шабы не зацикленные, а отрабатывающие ОДИН акк за один запуск.
Подскажи ,как остановить лишнее?
 
как остановить лишнее
1) если снаружи то ZennoPoster.InterruptTask
2) второй вариант - использование внешних данных (файлы, мутексы, бд, глобалки и тд) и проверка в самом шабе, можно ли ему продолжать работу
 
По пер
1) если снаружи то ZennoPoster.InterruptTask
2) второй вариант - использование внешних данных (файлы, мутексы, бд, глобалки и тд) и проверка в самом шабе, можно ли ему продолжать работу

По первому варианту можешь код написать?
 
У меня запущенно 10 потоков и 10 исполнений. Шаблон работает в цикле, т.е. он не остановится пока не обработает все акки, к примеру. Мне надо, после определенного события снизить поток и исполнение до 3х, т.. чтобы в эту минуту исполнялось только 3 потока. Если я делаю это, любым из вышеописанных методом, то устанавливается потоки 3, н ов работе остаются 10, т.к. шаблон работает в цикле))) Так понятнее?

Знакомо. Для снижения прожорливости так и делаю.
Сделай в конце цикла проверку сколько потоков запущено.
Если больше, чем нужно, то выход.
Возможно, у тебя потоки будут падать в 0 периодически.
Если проверки выполнятся +- в один промежуток времени, т.к. поток завершается не сразу. Но вероятность небольшая.
 
Последнее редактирование:
  • Спасибо
Реакции: TheBoss
в последних версиях:
[+] Добавлен метод ZennoPoster.SetMaxThreads
 
  • Спасибо
Реакции: kagorec
Ковыряюсь тут с потоками, хочу чтобы шаблон при старте первым потоком по своему разумению устанавливал "сколько делать" и "максимум потоков".
2020-10-20_09-13-02.jpg
И как-бы при первом старте после первичной компиляции всё работает, но очередные попытки запустить шаблон натыкается на то, что зеннопостер помнит, что CommonCode.rezult = false с прошлой сессии выполнения и вся моя гениальная логика терпит крах.
Что делать парни, нужна помощь зала!
 
Ковыряюсь тут с потоками, хочу чтобы шаблон при старте первым потоком по своему разумению устанавливал "сколько делать" и "максимум потоков".
Посмотреть вложение 65675
И как-бы при первом старте после первичной компиляции всё работает, но очередные попытки запустить шаблон натыкается на то, что зеннопостер помнит, что CommonCode.rezult = false с прошлой сессии выполнения и вся моя гениальная логика терпит крах.
Что делать парни, нужна помощь зала!
перед условием где проверяется CommonCode.rezult нужно реализовать логику сброса метки.
 
перед условием где проверяется CommonCode.rezult нужно реализовать логику сброса метки.
можно конечно какой-то счетчик прикрутить и на последней итерации сбрасывать CommonCode.rezult в true.
Я честно говоря не могу понять почему зенка помнит эти артефакты прошлой жизни шаблона :bn:.
 
можно конечно какой-то счетчик прикрутить и на последней итерации сбрасывать CommonCode.rezult в true.
Я честно говоря не могу понять почему зенка помнит эти артефакты прошлой жизни шаблона :bn:.
надо четко поставить условия когда сбрасывать счетчик. могу предположить что при первом запуске шаблона у него количество выполнений 0. вот наверно по этому условию и сбрасывать метку.
 
надо четко поставить условия когда сбрасывать счетчик.
ориентироваться на входящие настройки "ну такое себе решение" на мой взгляд, в чужих руках во входных настройках шаблона может оказаться черти что. Я хочу эти "черти что сбрасывать" ставить как положено и вперед.
 
ориентироваться на входящие настройки "ну такое себе решение" на мой взгляд, в чужих руках во входных настройках шаблона может оказаться черти что. Я хочу эти "черти что сбрасывать" ставить как положено и вперед.
разве я говорил про входные настройки ? может не совсем правильно сказал.... количество потоков работающих на данный момент я имел ввиду.
65679
 
  • Спасибо
Реакции: p-sergei
Здравствуйте. На каком-то этапе выполнения шаблона прописываю следующий код, но количество потоков не увеличивается. Что я делаю не так?
C#:
Развернуть Свернуть Копировать
string settings = "<LimitOfThreads>200</LimitOfThreads>" //этот параметр устанавливает нужное число потоков, соответственно тебе их нужно указать
                + "<MaxAllowOfThreads>300</MaxAllowOfThreads>"
                + "<DoneSuccesfully>0</DoneSuccesfully>"
                + "<DoneAll>0</DoneAll>"
                + "<NumberOfTries>1000</NumberOfTries>" // это число выполнений
                + "<LastNumberOfTries>0</LastNumberOfTries>"
                + "<Priority>50</Priority>"
                + "<Proxy>{DoNotUseProxy, IfPossible, UseProxyWithoutRemove, UseProxy}</Proxy>"
                + "<Status>Newbie</Status>"
                + "<ProxyLabels></ProxyLabels>"
                + "<ShouldBeExecutedRandomly>{True, False}</ShouldBeExecutedRandomly>"
                + "<GroupLabels>Без метки</GroupLabels>"
                + "<GroupStates>Выполнены</GroupStates>"
                + "<MaxNumOfSuccesStop>-1</MaxNumOfSuccesStop>"
                + "<MaxNumOfFailStop>-1</MaxNumOfFailStop>"
                + "<NumOfFailStop>0</NumOfFailStop>";


ZennoPoster.SetExecutionSettings(Guid.Parse(project.TaskId), settings); // применит настройки к текущему шаблону
 
Здравствуйте. На каком-то этапе выполнения шаблона прописываю следующий код, но количество потоков не увеличивается. Что я делаю не так?
C#:
Развернуть Свернуть Копировать
string settings = "<LimitOfThreads>200</LimitOfThreads>" //этот параметр устанавливает нужное число потоков, соответственно тебе их нужно указать
                + "<MaxAllowOfThreads>300</MaxAllowOfThreads>"
                + "<DoneSuccesfully>0</DoneSuccesfully>"
                + "<DoneAll>0</DoneAll>"
                + "<NumberOfTries>1000</NumberOfTries>" // это число выполнений
                + "<LastNumberOfTries>0</LastNumberOfTries>"
                + "<Priority>50</Priority>"
                + "<Proxy>{DoNotUseProxy, IfPossible, UseProxyWithoutRemove, UseProxy}</Proxy>"
                + "<Status>Newbie</Status>"
                + "<ProxyLabels></ProxyLabels>"
                + "<ShouldBeExecutedRandomly>{True, False}</ShouldBeExecutedRandomly>"
                + "<GroupLabels>Без метки</GroupLabels>"
                + "<GroupStates>Выполнены</GroupStates>"
                + "<MaxNumOfSuccesStop>-1</MaxNumOfSuccesStop>"
                + "<MaxNumOfFailStop>-1</MaxNumOfFailStop>"
                + "<NumOfFailStop>0</NumOfFailStop>";


ZennoPoster.SetExecutionSettings(Guid.Parse(project.TaskId), settings); // применит настройки к текущему шаблону
Попробуйте такой вариант - приложил шаблон.
У себя проверил - работает.
 

Вложения

  • Спасибо
Реакции: Anfim777 и hago73
Запускаю шаблон, вручную устанавливаю к примеру 5 потоков. Когда данные из списка закончатся по условию - мне надо уменьшить на 1 поток работу шаблона.

Логика: сначала надо узнать кол-во потоков текущее, затем уменьшаю на 1, и меняю кол-во потоков?
Выше попробовал разные методы, не совсем так получается как нужно.

Как уменьшать потоки на 1? в C# не силен.
 
Запускаю шаблон, вручную устанавливаю к примеру 5 потоков. Когда данные из списка закончатся по условию - мне надо уменьшить на 1 поток работу шаблона.

Логика: сначала надо узнать кол-во потоков текущее, затем уменьшаю на 1, и меняю кол-во потоков?
Выше попробовал разные методы, не совсем так получается как нужно.

Как уменьшать потоки на 1? в C# не силен.
Потоки нельзя уменьшать/увеличивать. Можно добавить попыток и установить максимум. При уменьшении максимума, новые потоки не будет запускаться, после того как завершится запущенный поток.
Более оперативное воздействие возможно только внедрением в сам шаблон дополнительного управления, через общие ресурсы.
 
Потоки нельзя уменьшать/увеличивать. Можно добавить попыток и установить максимум. При уменьшении максимума, новые потоки не будет запускаться, после того как завершится запущенный поток.
Более оперативное воздействие возможно только внедрением в сам шаблон дополнительного управления, через общие ресурсы.

По форуму поискал, для себя нашел такое решение:
Условие + батник по уменьшению потоков, думаю получится сделать
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)