Как правильно обрабатывать многопоточность?

system2

Client
Регистрация
21.04.2010
Сообщения
57
Благодарностей
15
Баллы
8
Может в сабже и не правильно выразился, но у меня такой вопрос, кто как обрабатывает следующее:

допустим есть ресурс для проспама и профили пользователей, к примеру site.ru/profile/NNN/ вместо NNN есс-нно порядковый номер.
Я чтобы корректно работала спамилка делаю общий файл с порядковым номером, и 50-60 потоков делают следующим образом
читают счётчик из файла - увеличивают - записывают в файл
пробовал глобальные счётчики но они почему-то в рамках одного процесса, скажем на 5 потоков(ну как выставишь) а потом сбрасываются почему-то.

может просто я не умею готовить глобальные переменные???

Или вот ещё пример: список разных логинов довольно внушительный скажем 1 лям, брать строчку и удалять не вариант, потому что вес файла приличный и винт хоть и ссд но не потянет 50-60 потоков, поэтому подгружаю весь список, а потом выдираю нужный элемент с помощью счётчика, который обрабатываю через файл, см. выше. (в принципе работает такая схема)

кто как обрабатывает такие данные, поделитесь плиз мыслями?
 

СТЕПАН

Moderator
Регистрация
17.03.2013
Сообщения
951
Благодарностей
353
Баллы
63
просто сохрани весь список ссылок на все профиля в тхт и бери их с удалением с многопотоком ни каких проблем не будет
 
  • Спасибо
Реакции: Roman*

system2

Client
Регистрация
21.04.2010
Сообщения
57
Благодарностей
15
Баллы
8
просто сохрани весь список ссылок на все профиля в тхт и бери их с удалением с многопотоком ни каких проблем не будет
ты имеешь в виду закидываем txt в список и берём строку с удалением, предварительно в списке "выставляем сохранять изменения в файл"?

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

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Да винты и так не грузятся, всё работа в раме происходит, изменения списка время от времени отражаются в файле.
 

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Насчёт глобальных счётчиков - сейчас там баг на баге, не пригодно для работы. По части твоего вопроса - можно выносить работу в mysql базу или sqlite, в таком случае тебе нужен кодер либо собственная соответствующая квалификация.
 
  • Спасибо
Реакции: bigcajones

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113

rostonix

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

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 631
Благодарностей
461
Баллы
83
ну например то что их не нужно объявлять или еще как то там
с ними сложно короче)
но у меня как то раз получилось сделать шаб с 10 глобальными и он норм работал
ну почти норм)
 

system2

Client
Регистрация
21.04.2010
Сообщения
57
Благодарностей
15
Баллы
8
Прикладывайте пример как вы делаете.
глобальные счётчики но они почему-то в рамках одного процесса, скажем на 5 потоков(ну как выставишь) а потом сбрасываются почему-то.
т.е. они работают в рамках одного процесса...
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

Вложения

  • 16,7 КБ Просмотры: 322

system2

Client
Регистрация
21.04.2010
Сообщения
57
Благодарностей
15
Баллы
8
сорри rostonix я был не прав, работает...
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113

Вложения

  • 11,8 КБ Просмотры: 29

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Вы объявляете глобальную переменную при каждом выполнении. Логично что работает не так как ожидается.
http://i.gyazo.com/ebbc4c0f62e2dd33a28ee7d326308e6c.png
Это автоматом происходит, я же заполнял только "значение по умолчанию", сделать так чтобы было заполнено только "значение по умолчанию" мне не удалось, всегда он это подставляет в "значение", и даже визуально смотрится будто там ничего нет, но если открыть шаб снова - то как на скрине этом и получится.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Переменную нужно удалить из списка глобальных.
Смотрите мой пример.
 

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113

Вложения

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Какой билд?
Поставил паузу между добавлением данных в 1 сек.
запускал в 1-10 потоков несколько раз. Ни одной ошибки в файле.
 

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Какой билд?
Поставил паузу между добавлением данных в 1 сек.
запускал в 1-10 потоков несколько раз. Ни одной ошибки в файле.
Билд 5.1.2.0, а без пауз как работает, с ошибками?
 

rostonix

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

Atol

Client
Регистрация
30.12.2013
Сообщения
79
Благодарностей
7
Баллы
8
та же проблемма - значение глобальных удаляется после окончания проекта - тоесть вовсе не глобальная а простая переменная выходит, пример Ростоникса работает а мои нет, при запуске удаляются данные переменной - как быть - глобальные не работают ...
 

Atol

Client
Регистрация
30.12.2013
Сообщения
79
Благодарностей
7
Баллы
8
может кому поможет - с нудной игрой удаления добавления глобальных, таинственным образом заработало )
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Если глобальная переменная сбрасывается, значит она объявляется в начале проекта, значит есть в списке переменных, чего быть не должно.
 
  • Спасибо
Реакции: kfil

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Сложилась такая же проблема с многопотоком, парсит 111,222,333, итд подскажите как решить проблему то ?У ТСа все таки получилось чего то с решением?как быть?
 

rostonix

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

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Заходит на страницу, парсит 20 ссылок и кладет в тхт.В один поток все замечательно, но ставлю в 20 и парсит первую страницу несколько потоков одновременно и кладут в тхт итд.
И вопрос второй,идентичный.
Берет ссылку их тхт, постит..В 1 поток все хорошо, но в многопотоке будет браться также всеми потоками одна ссылка и постить будет сразу не 1 пост, все 20?
Подскажите как сделать логику,чтобы каждым потоком бралось только один раз,как и парсилось.Или парсить многопотоком не получится, так как всего одно окно инстанса работает только?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Заходит на страницу, парсит 20 ссылок и кладет в тхт.В один поток все замечательно, но ставлю в 20 и парсит первую страницу несколько потоков одновременно и кладут в тхт итд.
Тут где то у вас ошибка значит. Как берутсяя данные? Ведь как-то одна и та же страница у вас попадает в разные инстансы
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Да попадает, делал как для однопотока.Значение счетчика=1 ставлю в ссылку и паршу первую страницу,кладу в тхт, значение счетчика =2 ставлю в ссылку и паршу вторую, кладу в тхт.А получается что каждый инстанс заходит все делает также.Как выйти из этой ситуации и как правильно переделать логику в данном случае?
 

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