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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
А максимум потоков можно регулировать из кода? На подобии как добавлять исполнения.

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

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

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

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

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63
Для увеличения максимального кол-ва потоков можно использовать такой C#-код:

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
  • Спасибо
Реакции: Castaneda

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113
  • Спасибо
Реакции: Sergodjan

TheBoss

Client
Регистрация
30.03.2015
Сообщения
529
Благодарностей
194
Баллы
43
Сталкнулся с такой задачей... мне требуется при достижении определенного счетчика увеличивать на один поток.

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

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

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63
Сталкнулся с такой задачей... мне требуется при достижении определенного счетчика увеличивать на один поток.

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

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

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63

TheBoss

Client
Регистрация
30.03.2015
Сообщения
529
Благодарностей
194
Баллы
43
прое**лся с этим вопросом 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 потоков, то не пойму как сделать. У меня ставится поток, но так как шаблон в цикле не останавливаются до нужного значения потоки, которые уже в работе. ;-)
 

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63
ок. спасибо))

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

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

TheBoss

Client
Регистрация
30.03.2015
Сообщения
529
Благодарностей
194
Баллы
43
Можешь перечитать то, что написал и сделать рерайт "для человеков". Нихрена не понятно.

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

DmitryAk

Client
Регистрация
14.12.2016
Сообщения
860
Благодарностей
824
Баллы
93
Ну так надо не через добавление потоков извращаться, а останавливать лишние или сделать все же по человечески - первый запуск устанавливает кол-во исполнений равное колву аккаунтов которые надо обработать, а мак. число потоков варьировать. Ну и шабы не зацикленные, а отрабатывающие ОДИН акк за один запуск.
 

TheBoss

Client
Регистрация
30.03.2015
Сообщения
529
Благодарностей
194
Баллы
43
Ну так надо не через добавление потоков извращаться, а останавливать лишние или сделать все же по человечески - первый запуск устанавливает кол-во исполнений равное колву аккаунтов которые надо обработать, а мак. число потоков варьировать. Ну и шабы не зацикленные, а отрабатывающие ОДИН акк за один запуск.
Подскажи ,как остановить лишнее?
 

DmitryAk

Client
Регистрация
14.12.2016
Сообщения
860
Благодарностей
824
Баллы
93
как остановить лишнее
1) если снаружи то ZennoPoster.InterruptTask
2) второй вариант - использование внешних данных (файлы, мутексы, бд, глобалки и тд) и проверка в самом шабе, можно ли ему продолжать работу
 

TheBoss

Client
Регистрация
30.03.2015
Сообщения
529
Благодарностей
194
Баллы
43
По пер
1) если снаружи то ZennoPoster.InterruptTask
2) второй вариант - использование внешних данных (файлы, мутексы, бд, глобалки и тд) и проверка в самом шабе, можно ли ему продолжать работу
По первому варианту можешь код написать?
 

DmitryAk

Client
Регистрация
14.12.2016
Сообщения
860
Благодарностей
824
Баллы
93

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63
У меня запущенно 10 потоков и 10 исполнений. Шаблон работает в цикле, т.е. он не остановится пока не обработает все акки, к примеру. Мне надо, после определенного события снизить поток и исполнение до 3х, т.. чтобы в эту минуту исполнялось только 3 потока. Если я делаю это, любым из вышеописанных методом, то устанавливается потоки 3, н ов работе остаются 10, т.к. шаблон работает в цикле))) Так понятнее?
Знакомо. Для снижения прожорливости так и делаю.
Сделай в конце цикла проверку сколько потоков запущено.
Если больше, чем нужно, то выход.
Возможно, у тебя потоки будут падать в 0 периодически.
Если проверки выполнятся +- в один промежуток времени, т.к. поток завершается не сразу. Но вероятность небольшая.
 
Последнее редактирование:
  • Спасибо
Реакции: TheBoss

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63
в последних версиях:
[+] Добавлен метод ZennoPoster.SetMaxThreads
 

p-sergei

Client
Регистрация
20.12.2016
Сообщения
542
Благодарностей
262
Баллы
63
Ковыряюсь тут с потоками, хочу чтобы шаблон при старте первым потоком по своему разумению устанавливал "сколько делать" и "максимум потоков".
2020-10-20_09-13-02.jpg
И как-бы при первом старте после первичной компиляции всё работает, но очередные попытки запустить шаблон натыкается на то, что зеннопостер помнит, что CommonCode.rezult = false с прошлой сессии выполнения и вся моя гениальная логика терпит крах.
Что делать парни, нужна помощь зала!
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Ковыряюсь тут с потоками, хочу чтобы шаблон при старте первым потоком по своему разумению устанавливал "сколько делать" и "максимум потоков".
Посмотреть вложение 65675
И как-бы при первом старте после первичной компиляции всё работает, но очередные попытки запустить шаблон натыкается на то, что зеннопостер помнит, что CommonCode.rezult = false с прошлой сессии выполнения и вся моя гениальная логика терпит крах.
Что делать парни, нужна помощь зала!
перед условием где проверяется CommonCode.rezult нужно реализовать логику сброса метки.
 

p-sergei

Client
Регистрация
20.12.2016
Сообщения
542
Благодарностей
262
Баллы
63
перед условием где проверяется CommonCode.rezult нужно реализовать логику сброса метки.
можно конечно какой-то счетчик прикрутить и на последней итерации сбрасывать CommonCode.rezult в true.
Я честно говоря не могу понять почему зенка помнит эти артефакты прошлой жизни шаблона :bn:.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
можно конечно какой-то счетчик прикрутить и на последней итерации сбрасывать CommonCode.rezult в true.
Я честно говоря не могу понять почему зенка помнит эти артефакты прошлой жизни шаблона :bn:.
надо четко поставить условия когда сбрасывать счетчик. могу предположить что при первом запуске шаблона у него количество выполнений 0. вот наверно по этому условию и сбрасывать метку.
 

p-sergei

Client
Регистрация
20.12.2016
Сообщения
542
Благодарностей
262
Баллы
63
надо четко поставить условия когда сбрасывать счетчик.
ориентироваться на входящие настройки "ну такое себе решение" на мой взгляд, в чужих руках во входных настройках шаблона может оказаться черти что. Я хочу эти "черти что сбрасывать" ставить как положено и вперед.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
ориентироваться на входящие настройки "ну такое себе решение" на мой взгляд, в чужих руках во входных настройках шаблона может оказаться черти что. Я хочу эти "черти что сбрасывать" ставить как положено и вперед.
разве я говорил про входные настройки ? может не совсем правильно сказал.... количество потоков работающих на данный момент я имел ввиду.
65679
 
  • Спасибо
Реакции: p-sergei

hago73

Client
Регистрация
07.09.2012
Сообщения
59
Благодарностей
21
Баллы
8
Здравствуйте. На каком-то этапе выполнения шаблона прописываю следующий код, но количество потоков не увеличивается. Что я делаю не так?
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); // применит настройки к текущему шаблону
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
Здравствуйте. На каком-то этапе выполнения шаблона прописываю следующий код, но количество потоков не увеличивается. Что я делаю не так?
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
Регистрация
21.07.2021
Сообщения
78
Благодарностей
30
Баллы
18
Запускаю шаблон, вручную устанавливаю к примеру 5 потоков. Когда данные из списка закончатся по условию - мне надо уменьшить на 1 поток работу шаблона.

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

Как уменьшать потоки на 1? в C# не силен.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Запускаю шаблон, вручную устанавливаю к примеру 5 потоков. Когда данные из списка закончатся по условию - мне надо уменьшить на 1 поток работу шаблона.

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

Как уменьшать потоки на 1? в C# не силен.
Потоки нельзя уменьшать/увеличивать. Можно добавить попыток и установить максимум. При уменьшении максимума, новые потоки не будет запускаться, после того как завершится запущенный поток.
Более оперативное воздействие возможно только внедрением в сам шаблон дополнительного управления, через общие ресурсы.
 
Регистрация
21.07.2021
Сообщения
78
Благодарностей
30
Баллы
18
Потоки нельзя уменьшать/увеличивать. Можно добавить попыток и установить максимум. При уменьшении максимума, новые потоки не будет запускаться, после того как завершится запущенный поток.
Более оперативное воздействие возможно только внедрением в сам шаблон дополнительного управления, через общие ресурсы.
По форуму поискал, для себя нашел такое решение:
Условие + батник по уменьшению потоков, думаю получится сделать
 

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