вопрос по многопоточности

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
создал шаблон для парсинга:
база ссылок 30к в список из файла - беру по строке из списка - переход на сайт - парсинг по заданому параметру(два варианта: да или нет) если да кидает в список "yes" если нет в список "no" и уже из списка сохраняет в файл. зацикливаю шаблон на 10 выполнений.
запускаю в многопотоке(20) устанавливаю кол-во выполнений 3000 итог: в файле успешные около 4к линков.. а вот в файле неуспех .. 90к ... как такое может быть?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Что значит?
уже из списка сохраняет в файл.
Просто привяжите список к файлу и в настройках списка поставить галочку "Сохранять изменения списка в файл"

база ссылок 30к в список из файла - беру по строке из списка
С удалением?
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
Что значит?

Просто привяжите список к файлу и в настройках списка поставить галочку "Сохранять изменения списка в файл"


С удалением?
конечно с удалением ...
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
Переход на сайт с прокси или без? Есть вероятность, что сайт просто не успевает загрузиться.
 

zennomoves

Client
Регистрация
05.12.2011
Сообщения
235
Благодарностей
72
Баллы
28
создал шаблон для парсинга:
база ссылок 30к в список из файла - беру по строке из списка - переход на сайт - парсинг по заданому параметру(два варианта: да или нет) если да кидает в список "yes" если нет в список "no" и уже из списка сохраняет в файл. зацикливаю шаблон на 10 выполнений.
запускаю в многопотоке(20) устанавливаю кол-во выполнений 3000 итог: в файле успешные около 4к линков.. а вот в файле неуспех .. 90к ... как такое может быть?
Проверь мою догадку: если ты увеличишь число потоков, то число успешных и неуспешных ещё вырастет. Я думаю, это происходит из-за того, что ты зациклил шаблон, кстати, непонятно для чего.

Получается, что у тебя пока предыдущие потоки отрабатывают 10 проходок в цикле, остальные потоки работают с теми же ссылками что и предыдущие без тех, которые были забраны этими предыдущими потоками при запуске. У тебя, наверное, дублей полно в конечных результатах.

Синхронизация потоков осуществляется за счёт перезагрузки в каждом потоке изменённого файла с ссылками, из которого все потоки их берут, а у тебя пока идут 10 повторов в цикле, подзагрузка обновлённого файла не происходит пока цикл не закончится, и все потоки используют некоторое количество одних и тех же ссылок из общего файла, ведь когда они его подгружают в список, он уже остаётся в памяти, и потоки берут даже те ссылки из памяти, которые были забраны другими потоками из файла, потому что в памяти изменений не произошло, так как файл ещё не перезагрузился. .

Уйди от цикла внутри шаблона, тогда, думаю, будет нормально.
 
Последнее редактирование:

zennomoves

Client
Регистрация
05.12.2011
Сообщения
235
Благодарностей
72
Баллы
28

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
Проверь мою догадку: если ты увеличишь число потоков, то число успешных и неуспешных ещё вырастет. Я думаю, это происходит из-за того, что ты зациклил шаблон, кстати, непонятно для чего.

Получается, что у тебя пока предыдущие потоки отрабатывают 10 проходок в цикле, остальные потоки работают с теми же ссылками что и предыдущие без тех, которые были забраны этими предыдущими потоками при запуске. У тебя, наверное, дублей полно в конечных результатах.

Синхронизация потоков осуществляется за счёт перезагрузки в каждом потоке изменённого файла с ссылками, из которого все потоки их берут, а у тебя пока идут 10 повторов в цикле, подзагрузка обновлённого файла не происходит пока цикл не закончится, и все потоки используют некоторое количество одних и тех же ссылок из общего файла, ведь когда они его подгружают в список, он уже остаётся в памяти, и потоки берут даже те ссылки из памяти, которые были забраны другими потоками из файла, потому что в памяти изменений не произошло, так как файл ещё не перезагрузился. .

Уйди от цикла внутри шаблона, тогда, думаю, будет нормально.
я разобрался уже .... у меня при каждой проходке цикла сохранялось из списка в файл ..а нужно было ... или чистить список после каждой проходке цикла... или сохранять в файл только когда закончиться весь цикл ...)))))))))))) ну сам лохонулся .. ну бывает ...
насчет уйти из цикла внутри шаблона: шаблон очень быстрый .. и если сделать без цикла .. то при многопотоке больше 5 потоков не поднимает .. так что приходиться
 

zennomoves

Client
Регистрация
05.12.2011
Сообщения
235
Благодарностей
72
Баллы
28
я разобрался уже .... у меня при каждой проходке цикла сохранялось из списка в файл ..а нужно было ... или чистить список после каждой проходке цикла... или сохранять в файл только когда закончиться весь цикл ...)))))))))))) ну сам лохонулся .. ну бывает ...
насчет уйти из цикла внутри шаблона: шаблон очень быстрый .. и если сделать без цикла .. то при многопотоке больше 5 потоков не поднимает .. так что приходиться
Так разве потоки у тебя не будут частично одни и те же ссылки из общего файла обрабатывать в этом случае с циклом? Т.е. в итоговых списках у тебя будут дубли, и твоя многопоточность уйдёт на парсинг этих дублей.

Интересно, кстати, результат узнать, как у тебя в итоге с числом ссылок в сумме 2-списков на выходе будут обстоять дела.
 
Последнее редактирование:

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
Так разве потоки у тебя не будут частично одни и те же ссылки из общего файла обрабатывать в этом случае с циклом?
читал на этом форуме, что список, в подобной ситуации, работает как контроллер.. то есть для каждого потока - следующая строка..
Интересно, кстати, результат узнать, как у тебя в итоге с числом ссылок в сумме 2-списков на выходе будут обстоять дела.
поставил кубики очистки списков "yes" и "no" в начале каждого прохода цикла и все стало норм .. сошелся дебет с кредитом ..)))
 
  • Спасибо
Реакции: zennomoves

zennomoves

Client
Регистрация
05.12.2011
Сообщения
235
Благодарностей
72
Баллы
28
читал на этом форуме, что список, в подобной ситуации, работает как контроллер.. то есть для каждого потока - следующая строка..
Любопытно, я тоже здесь читал от одного из модеров про разрыв циклов при многопоточности. Спасибо за доп. информацию.
 

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