Однократное взятие строк из списка

NickZennoPr

Client
Регистрация
14.02.2023
Сообщения
24
Благодарностей
1
Баллы
3
Как можно задать последовательное или случайное однократное взятие строк из списка?
Например, если в списке 50 строк и количество выполнений проекта тоже 50, то ни одна строка не была взята более 1 раза.
Сейчас, например, у меня установлено получение случайной строки из списка с удалением, но всё равно почему-то одновременно могут браться 2 и более раз одна и та же строка, что, например, в случае с прокси недопустимо.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Если работаете во многопомтоке то надо пересмотреть логику выполнения экшенов. А так, если строка берется с удалением, то она не может взяться в следующем цикле. Список сохраняете?
 

NickZennoPr

Client
Регистрация
14.02.2023
Сообщения
24
Благодарностей
1
Баллы
3
Если работаете во многопомтоке то надо пересмотреть логику выполнения экшенов. А так, если строка берется с удалением, то она не может взяться в следующем цикле. Список сохраняете?
Вот именно, что по идее не может и не должна, а берётся, и это напрягает сильно.

Сначала я создаю список, указываю в нём путь к файлу, откуда будут взяты строки.
Далее настраиваю взятие первой или случайной строки с удалением.
По идее должно быть, что если строк в файле 10, количество выполнений, например, 15, то с 11 потока (инстанса) уже и не должен выполняться проект, так как ресурсов для продолжения работы не хватает (строк).
На деле же начинают повторно браться якобы удалённые строки из списка, и получается повтор строк. Что-то не так, значит, работает. Например, в случае с прокси для меня это недопустимо, чтобы были повторы, причём одновременные.

А нужно сохранять после каждого удаления строки изменения списка? Я нашёл только экшн "Сохранить в файл", а не текущее состояние изменённого списка.

Мне-то нужно без внесения изменения в исходный файл в данном случае, а просто однократно считать строки из файла в список и далее работать со списком.
 
Последнее редактирование:

NickZennoPr

Client
Регистрация
14.02.2023
Сообщения
24
Благодарностей
1
Баллы
3
Если работаете во многопомтоке то надо пересмотреть логику выполнения экшенов. А так, если строка берется с удалением, то она не может взяться в следующем цикле. Список сохраняете?
Как можно реализовать, чтобы строки брались последовательно, например, условно первый инстантс брал первую строку с удалением, второй - вторую и т.д., и после однократного использования всех строк списка проект прекращал работу по причине того, что список пуст?
И как прописать, что если строка уже взята в другом потоке (инстансе), то больше её не брать?
 
Последнее редактирование:

username666

Client
Регистрация
20.03.2020
Сообщения
211
Благодарностей
89
Баллы
28
Попробуйте использовать блек лист, после взятия строки, помещать ее в другой список и перед тем как брать новую строку с первого списка, проверять, есть ли такая строка во втором списке. Сохранить в файл и привязку к списку рекомендую не использовать одновременно. Если работаете со списками, то используйте экшены работы со списками, т.к могут валиться ошибки из-за этого, что файл занят и т.д. Так же вариант брать первую строку с удалением и добавлять ее потом в конец списка, раз это прокси, пересечений быть не должно, если не использовать такие экшены, как привязать к файлу, лучше прямой путь в самом листе и уже делать например 50 повторений и не удалиться ничего и повторений быть не должно в таком случае.
 
  • Спасибо
Реакции: NickZennoPr

NickZennoPr

Client
Регистрация
14.02.2023
Сообщения
24
Благодарностей
1
Баллы
3
Попробуйте использовать блек лист, после взятия строки, помещать ее в другой список и перед тем как брать новую строку с первого списка, проверять, есть ли такая строка во втором списке. Сохранить в файл и привязку к списку рекомендую не использовать одновременно. Если работаете со списками, то используйте экшены работы со списками, т.к могут валиться ошибки из-за этого, что файл занят и т.д. Так же вариант брать первую строку с удалением и добавлять ее потом в конец списка, раз это прокси, пересечений быть не должно, если не использовать такие экшены, как привязать к файлу, лучше прямой путь в самом листе и уже делать например 50 повторений и не удалиться ничего и повторений быть не должно в таком случае.
Попробую. Спасибо за предложенные варианты.
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 307
Благодарностей
865
Баллы
113
Берем строку с удалением (галочка сохранять изменения в файл стоит), делаем что надо и в конце шаблона возвращаем эту строку в список через Bad и Good end. Если потоков больше чем строк, им уже нечего брать будет и пойдут по красной.
Только вот при краше постера\ребуту пк можно потерять этот список.
 
  • Спасибо
Реакции: NickZennoPr

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Я тоже с этим сталкивался. Оптимально решение для меня стало использование сниппета с локами.
 

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 702
Благодарностей
1 078
Баллы
113
Как можно задать последовательное или случайное однократное взятие строк из списка?
Например, если в списке 50 строк и количество выполнений проекта тоже 50, то ни одна строка не была взята более 1 раза.
Сейчас, например, у меня установлено получение случайной строки из списка с удалением, но всё равно почему-то одновременно могут браться 2 и более раз одна и та же строка, что, например, в случае с прокси недопустимо.
Как вариант, можешь добавлять строки из оригинального списка во временный список, а потом уже из него работать. Таким образом, ты избежишь проблем в лице файловой системы, которая может подбрасывать сюрпризы.
 

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