Парсинг в 5 потоков. Объясните логику работы

fireplayer

Client
Регистрация
20.10.2015
Сообщения
36
Благодарностей
1
Баллы
8
Есть проект и через ZennoPoster я пытаюсь запустить его 1500 раз в 5 потоков(версия Standard у меня).
С чем проблема: парсер должен пройтись по всем ссылкам в таблице URL.excel

Для этого я создаю файлик и переменную start.txt где ставлю начальное значение 0 и после успешного выполнения задачи переменная увеличивается на 1 и сохраняется в файлике. И так по кругу.
Когда я запускаю многопоточность, то три или четыре потока парсят одну и ту же ссылку,т.к. цикл не успел пройти до конца и переменная в файлe start.txt не успела увеличиться.

Как это обойти? Ставил в самом начале проекта увеливать счетчик на 1, но все равно не помогает.
Заранее спасибо
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 440
Благодарностей
503
Баллы
113
Берем первую строку с удалением, парсим что нужно, если спарсили - записываем результат куда хотим, если по какой-то причине не спарсили - дописываем строку в конец файла. В итоге каждый поток берёт отдельную ссылку и всё работает как надо.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Самое простое - брать строки с удалением, как вам подсказали выше
 

runlike

Client
Регистрация
22.09.2015
Сообщения
175
Благодарностей
51
Баллы
28
Тоже задавался этим вопросом.

Как уже писали, работаем не напрямую с файлом, а со списком, в котором лежит ваш файл и берем строку с удалением. Таким образом в многопотоке строки повторяться не будут. После того как взяли строку сразу же записывайте ее в конец, чтобы не пропала в случае аварийного завершения шаблона из-за ошибки. В конца шаблона в случае успеха удаляете взятую строку путем добавления экшена "Удалить строку из списка", вводим переменную с нашей ссылкой в поле "Содержащие данный текст".

Еще вариант - создать файл - исходник, откуда будут браться ваши строки по новой после опустошения списка
 

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