Написал многопоточный скрипт, но работает непонятно с неудачами
-
@Fox said in Написал многопоточный скрипт, но работает непонятно с неудачами:
@romanbiz Если в описании ресурса снять галочку с чтение и оставить галочку запись, то скрипт будет спрашивать куда сохранить файл.
Это просто совет или объяснение по моему вопросу? Просто не очень понял.
-
@romanbiz Это просто совет. Так проще, чем руками создавать файлы а потом открывать их в скрипте.
Ещё можно поставить количество неудач-1
, тогда количество ошибок для потока будет бесконечно.
Не помню, что будет, если выставить количество неудачных выполнений в ноль. Но у меня твой скрипт выполняется одинаково, вне зависимости от количества неудачных выполнений.[696732904] [21:14:04] Поток №1 : взял location [390375838] [21:14:04] Поток №1 : очистил файлы [719879683] [21:14:13] Поток №1 : забрал урл [307652982] [21:14:13] Поток №1 : 30 [445557405] [21:14:25] Поток №4 : поток спарсил [445557405] [21:14:27] Поток №2 : поток спарсил [445557405] [21:14:30] Поток №3 : поток спарсил [21:14:30] Поток №1 : Поток выполнен успешно с сообщением "Ok" [21:14:30] Скрипт завершен корректно
-
@Fox Спасибо за совет. Вы это количество меняете в интерфейсе?
-
@romanbiz Эмм, а зачем тебе менять количество успешных выполнений? Ты же говорил про ошибку в ошибочных выполнениях.
-
@Fox Я просто для теста менял, вот записал что у меня когда 3 потока, 3 успешных, 1 неудача
http://i.imgur.com/BNFWgpG.gifv
-
@romanbiz Гифка зло.. Нужная информация вконце анимации, которая циклически воспроизводится по новой.
У тебя даже на гифке вконце всё работает правильно. Ты выставляешь 3 потока, успешное выполнение функции 3 раза, неудачное выполнение 1 раз для !всех! потоков вместе. А не для каждого по 3.
То есть выставив значение 5, у тебя отработают два раза 2 поток, два раза 3 поток, и один раз 4 поток.
-
Или я что то путаю..
3 потока, 1 успешное, 1 неуспешное.[00:15:42] Поток №2 : поток спарсил [00:15:44] Поток №4 : поток спарсил [00:15:44] Поток №3 : поток спарсил [00:15:44] Поток №1 : готово.
3 потока, 2 успешных, 1 неуспешное
[00:17:34] Поток №2 : поток спарсил [00:17:39] Поток №3 : поток спарсил [00:17:40] Поток №2 : поток спарсил [00:17:40] Поток №4 : поток спарсил [00:17:40] Поток №1 : готово.
3 потока, 3 успешных, 1 неуспешное
[00:19:11] Поток №2 : поток спарсил [00:19:18] Поток №4 : поток спарсил [00:19:23] Поток №4 : поток спарсил [00:19:23] Поток №2 : поток спарсил [00:19:25] Поток №3 : поток спарсил [00:19:25] Поток №1 : готово.
3 потока, 10 успешных, 1 неуспешное
[00:21:05] Поток №4 : поток спарсил [00:21:05] Поток №2 : поток спарсил [00:21:06] Поток №3 : поток спарсил [00:21:12] Поток №2 : поток спарсил [00:21:13] Поток №4 : поток спарсил [00:21:18] Поток №2 : поток спарсил [00:21:19] Поток №3 : поток спарсил [00:21:20] Поток №4 : поток спарсил [00:21:28] Поток №4 : поток спарсил [00:21:30] Поток №2 : поток спарсил [00:21:32] Поток №3 : поток спарсил [00:21:35] Поток №4 : поток спарсил [00:21:35] Поток №1 : готово.
Получается каждый поток отрабатывает хотя бы один раз, а потом считают общее количество успешных выполнений.. странно.
-
@Fox Ничего не понимаю.
Выставляю 3 потока, 3 успеха, 1 неудачаРезультат:
[574710937] [22:23:18] Поток №4 : поток спарсил [574710937] [22:23:34] Поток №2 : поток спарсил [574710937] [22:23:34] Поток №3 : поток спарсил [574710937] [22:23:38] Поток №2 : поток спарсил [574710937] [22:24:02] Поток №4 : поток спарсил
Почему так? Что произошло? Почему 2 и 4 потоки повторились?
Я понимаю что плаваю в самой логике работы успешных и неудачных выполнений и хочу на конкретном примере понять в чем суть. Помогите, пожалуйста.
-
@romanbiz Для чистоты эксперемента, я создал нулёвый тестовый скрипт, с одним лишь экшеном лог. Запустил его в 3 потока, 3 успеха и 3 неудачи. Результат:
[370212654] [00:28:10] Поток №1 : поток спарсил [00:28:10] Поток №1 : Поток выполнен успешно с сообщением "Ok" [370212654] [00:28:10] Поток №1 : поток спарсил [00:28:10] Поток №1 : Поток выполнен успешно с сообщением "Ok" [370212654] [00:28:10] Поток №1 : поток спарсил [00:28:10] Поток №1 : Поток выполнен успешно с сообщением "Ok" [370212654] [00:28:10] Поток №2 : поток спарсил [00:28:10] Поток №2 : Поток выполнен успешно с сообщением "Ok" [370212654] [00:28:10] Поток №3 : поток спарсил [00:28:10] Поток №3 : Поток выполнен успешно с сообщением "Ok" [00:28:10] Скрипт завершен корректно
Точно так же, 5 запусков. Получается формула:
количество потоков плюс успешных выполнений минус 1.
Сейчас обмазгую почему так..
-
Опытным путём подтверждаю формулу успешных выполнений, если количество потоков больше 1, то:
количество потоков плюс успешных выполнений минус 1.
-
@Fox Можете помочь понять логику? Мне казалось что если нет неудачных выполнений в процессе выполнения скрипта, то не будет менятся количество успешных в результате, вне зависимости прописано в настройках наличие неудачных выполнений числом больше 0 или равно 0.
Пример, 3 человека бегут марафон. При этом допускается что если кто-то в процессе упадет и сломает ногу возможна 1 замена. В результате к финишу придут 3, даже если была 1 замена. Но вдруг приходят 5. Это непонятно.
-
@romanbiz Количество неудачных выполнений ни как не влияет на количество успешных, только что проверил на тестовом скрипте. Хоть -1, хоть 0, хоть 10. При 3 потоках, 3 успешных выполнений, всегда выдаёт 5 результатов. Как по формуле выше.
Я тоже писал выше, что немного непонятно. Я вообще не использую параметры успешных выполнений и неудачных выполнений. Да и вызов функции в несколько потоков использую крайне редко.
Для решении твоей задачи, подойдёт формула выше. А по самой логике и вопроса почему так происходит, скорей всего ответит только @support .
-
@Fox Я тоже проверил в тестовом скрипте не влияет. А вот в моем влияет.
3 потока 3 успеха 0 неудач
[574710937] [23:01:41] Поток №2 : поток спарсил [574710937] [23:01:42] Поток №3 : поток спарсил [574710937] [23:01:42] Поток №4 : поток спарсил
3 потока 3 успеха 1 неудача
[574710937] [23:03:05] Поток №4 : поток спарсил [574710937] [23:03:05] Поток №2 : поток спарсил [574710937] [23:03:07] Поток №3 : поток спарсил [574710937] [23:03:12] Поток №4 : поток спарсил [574710937] [23:03:12] Поток №2 : поток спарсил
Причем результат по количеству постоянный и там и там. Я сначала подозревал может не подгружается где-то поток. Но такая картина постоянно.
-
@romanbiz все очень просто. 1 поток отработал - успех +1, перезапустился, второй отработал, успех +1, перезапустился, третий о работал, успех +1, не перезапустился потому что количество успехов достигнуто. Первый и второй работают дальше, отработают, увидят что успехи достигнуты и не будут перезапускаться. Это сделано для того что бы не потоки не закрывались посередине работы, что бы не потерять ресурсы (почты, мобильные номера, капчи и т.д.)
-
Сделал в тестовом скрипте вызов функции в несколько потоков:
3 потока, 3 успешных, 0 неудачных.
[01:09:09] Поток №1 : Начало. [01:09:09] Поток №2 : поток спарсил [01:09:09] Поток №3 : поток спарсил [01:09:09] Поток №4 : поток спарсил [01:09:09] Поток №1 : Готово.
3 потока, 3 успешных, -1 неудачных.
[01:09:56] Поток №1 : Начало. [01:09:56] Поток №2 : поток спарсил [01:09:56] Поток №2 : поток спарсил [01:09:56] Поток №2 : поток спарсил [01:09:56] Поток №3 : поток спарсил [01:09:56] Поток №4 : поток спарсил [01:09:56] Поток №1 : Готово.
Получается, если выставить количество неудач 0, то потоки отрабатывают нормально, но только 1 раз.
3 потока, !10! успешных, 0 неудачных.
[01:14:32] Поток №1 : Начало. [01:14:32] Поток №2 : поток спарсил [01:14:32] Поток №3 : поток спарсил [01:14:32] Поток №4 : поток спарсил [01:14:32] Поток №1 : Готово.
-
@romanbiz 0 неудач зачем ставить? Это вообще вроде не предусмотрено в бас
-
@DrPrime Привет DrPrime. Я тоже сперва думал, что нельзя выставить 0.. Но оказалось можно. Если скажем оставить имя переменной в любом экшене пустым, то BAS не даст использовать его. А выставить количество неудачных выполнений в 0 даёт..
На счёт логики согласен, и формула подходит )).
-
@Fox я имею ввиду то как бас реагирует на этот 0
-
@DrPrime Спасибо за ответы. Понял, количество неудач равные 0 использовать не буду. Возникает вопрос. Я задаю 2 потока 4 успеха, N неудач.
В результате получаю стабильно 5 результатов. Почему 5? Откуда 5?[574710937] [23:32:27] Поток №2 : поток спарсил [574710937] [23:32:31] Поток №2 : поток спарсил [574710937] [23:32:35] Поток №2 : поток спарсил [574710937] [23:32:39] Поток №2 : поток спарсил [574710937] [23:32:45] Поток №3 : поток спарсил
[574710937] [23:34:58] Поток №3 : поток спарсил [574710937] [23:34:58] Поток №2 : поток спарсил [574710937] [23:35:03] Поток №3 : поток спарсил [574710937] [23:35:04] Поток №2 : поток спарсил [574710937] [23:35:07] Поток №3 : поток спарсил
-
@romanbiz У меня тестовый скрипт вызова функции в 2 потока и 2 успешных выполнений, всегда выдаёт 3 результата.
[485290703] [01:36:02] Поток №1 : Начало. [621883604] [01:36:02] Поток №2 : поток спарсил [621883604] [01:36:02] Поток №2 : поток спарсил [621883604] [01:36:02] Поток №3 : поток спарсил [381431811] [01:36:02] Поток №1 : Готово.