0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
|||||||||||
1 | |||||||||||
Про потоки с нуля03.09.2017, 20:11. Показов 1270. Ответов 37
Метки нет (Все метки)
Пробую осилить потоки по записи в блоге от krapotkin
Читал много, но эта запись далась легче всего. Но все равно есть нюансы, ответы на которые сложно найти на просторах интернета. Есть программа:
1. Программа все таки висит во время работы. Но если я правильно понял то только во время запуска потоков а не во время их работы. 2. Кол-во потоков сразу летит к SAME_TIME=500; и не играет роли сколько стоит MAX_THREADS=5; В лог пишет так: запущен URL 1 запущен URL 2 ....................... запущен URL 499 запущен URL 500 URL 32:503 URL 34:503 URL 35:503 URL 33:503 URL 36:503 =========================== Работа окончена URL 37:503 URL 39:503 URL 41:503 URL 40:503 ..................... 3. Как и где описать переменную th.paramXXX. Спасибо.
0
|
03.09.2017, 20:11 | |
Ответы с готовыми решениями:
37
Про потоки Вопрос про потоки Разъясните, кто продвинут в теме, про потоки опять про потоки |
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
03.09.2017, 21:40 | 2 |
0
|
04.09.2017, 01:43 | 3 | |||||||||||||||
Его код взят отсюда https://www.cyberforum.ru/blog... g4875.html
Если я не ошибаюсь Добавлено через 15 минут Присоединяюсь к вопросу extrimportal. Собственно, как по простому на пальцах задать количество потоков. Вот предположим Я хочу собрать все id в ВК но не просто собрать, а прикрепить к конкретному городу. Что я делаю
И получаю граблями по голове Добавлено через 10 минут Естественно будут прокси и токины. Но потоки просто забивают память и проц. Я так понимаю нужны семафоры, полазив по форумам так и не нашел рабочего кода, все ровно потоки забиваю память. При этом сервер Вк не доволен моими действиями. Может как то через мютексы???. Проясняю картину... Будет прокси лист из 10 IP а может и больше. Следовательно мне нужно создавать 5 потоков или даже 3 что бы они работали параллельно каждый запрос, смена IP и токена. И минимальная задержка, максимум 40 ms Где мне в моем коде прикрутить эти сраные мютексы или семафоры????? как мне заставить работать только заданное количество потоков? По предварительным расчетам, если я это реализую без дополнительных потоков, мне потребуется чуть больше месяца непрерывной работы. Задача, за счет потоков токинов и прокси вытащить все это дело на хотя бы 15 дней. Добавлено через 6 минут Вот что я нашел
Даже пришлось компьютер из розетки выключать
0
|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
|||||||||||
04.09.2017, 09:41 [ТС] | 4 | ||||||||||
Это просто орфографическая ошибка. Будет ли
0
|
D1973
|
04.09.2017, 10:11
#5
|
1
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
04.09.2017, 12:28 | 6 |
С какого перепугу их должно запускаться меньше?
Ты знаком с принципами работы цикла for?
0
|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
||||||
04.09.2017, 12:39 [ТС] | 7 | |||||
Да знаком. Но не в том дело. Дело в том что не работает условие
0
|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
|
04.09.2017, 14:07 [ТС] | 9 |
Перебираю литературу. Может когда то сам дойду)
0
|
04.09.2017, 14:11 | 10 |
Сейчас опытным путем иду по дороге мютексов
Идея такая Я создаю массив мютексов N количество, в соответствии с нужным количеством потоков в событии OnTermenate я удаляю те мютексы которые я передал потоку и создаю новый мютекс на его место и соответственно создаю очередной поток
0
|
04.09.2017, 14:27 | 11 |
тут чисто в мелочах дьявол-то ))
пример же демонстрационный. чтобы легко понимался... проблема тут конкретно в том, что работа с логом занимает в нем гораздо большее время, чем работа самих потоков если поставить в Execute Sleep(5000+Random(5000)) то мы увидим, что программа "оживает". т.к. пока потоки работают и не обращаются к основному потоку, программа занимается перерисовкой и ответом на события мыши и клавиатуры и в реальном приложении приходится учитывать и такие засады ) мемо - крайне тормозной компонент. если в нем 3-5 тысяч строк, то с гарантией 80% времени ваша программа будет тратить на его заполнение ))) я уже обжигался на этом)) если вместо мемо просто взять PaintBox и на него выводить StringList, скорость вырастет раз в 100 ) можно придумать и другие способы. Добавлено через 35 секунд не нужно плодить сущности без необходимости ) Добавлено через 4 минуты кажется я знаю почему ))
0
|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
|
04.09.2017, 14:42 [ТС] | 13 |
Я бы согласился если бы дело было в 2+2, но когда дело в гет запросе и вылетает 500 запросов к сайту сразу, то по моему здесь что то другое.
И могли бы вы объяснить что нибудь на счет "Как и где описать переменную th.paramXXX."
0
|
04.09.2017, 14:47 | 14 | |||||||||||||||
Зная что несу чушь
ThreadCount это количество потоков
в
0
|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
|
04.09.2017, 15:04 [ТС] | 15 |
Прочитайте про Application.ProcessMessages; у krapotkin
п.с. Как на меня то семафоры и мютексы слишком для такой простой задачи как получить хтмл по урл.
0
|
04.09.2017, 15:09 | 16 | |||||
да. Почитаю.
Тогда как же все таки задать количество потоков???? Мы все ходим вокруг да около. Добавлено через 1 минуту мне нужно держать активными 5 потоков, как кто то из потоков освобождается я даю ему задание. Добавлено через 48 секунд Мне наверное проще будет понять это схематично и на пальцах как ребенку.
0
|
04.09.2017, 15:18 | 17 | |||||
видно же по записи, что это поле переменной th, следовательно описывается в классе потока
0
|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
|
04.09.2017, 15:39 [ТС] | 18 |
Не ну тут реально ступил, вообще смотрел в другую сторону
popryduhin есть вариант который работает, но сам кривой и как раз его и пытаюсь переписать по правилам. могу поделиться пищей для размышлений. krapotkin у вас есть мысль почему у нас даже если выставить 2 потоки и общее количество 5000 записей для обработки. запускается 5000 сразу? Смотрел через хттпанализер, и это точно так.
0
|
04.09.2017, 15:52 | 19 |
extrimportal,
Было бы хорошо если бы Вы выложили решение здесь, в этой ветке. Добавлено через 7 минут Сейчас попробовал свой костыль. Вроде ка бы работает, удается контролировать количество через счетчики. Но есть сомнения, на счет ошибок, что если произойдет ошибка в самом потоке сработает ли событие OnTermenate которая вычитает количество ?? Добавлено через 1 минуту У indy свои потоки тоже есть
0
|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
||||||
04.09.2017, 16:07 [ТС] | 20 | |||||
На счет инди не понял.
Вот так сделали мне. Я хочу переписать что бы работало нормально. Тем более мне так сделали что идет утечка памяти, и что не сделай в районе 1400 потока аут оф мемори.
0
|
04.09.2017, 16:07 | |
04.09.2017, 16:07 | |
Помогаю со студенческими работами здесь
20
Про потоки Подскажите про потоки Вопрос про потоки вывода Объясните про потоки (stream) Ищу литературу про потоки Потоки, семафор в задаче про корабли Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |