У меня был очень похожий опыт, но я остановился на другом решении.
Я тоже тестировал скрипт на 8 ядерном 32 гб дедике с широким каналом и там еле еле 10 потоков шло.
Работающими решением оказалось взять 32 ядерный локальный сервер с 64 оперативки, на не очень быстром канале, с сокс5, на нем 100+ потоков запускалось.
Скрипт тот же, никаких оптимизаций не делалось.
Стоит конечно побольше, чем аренда дедика но тут уж зависит от окупаемости твоей темы, стоит ли оно того или нет.
Но соксы могут быть узким местом, по возможности нужно делать свои соксы. Для этого, можно брать дешевые VPS и установить сокс через опенсурсный софт microsocks для линукса (в инете полно инструкций по установке, занимает не более 5 минут вручную, и можно установку через БАС автоматизировать также на случай если нужны сотни соксов).
совет по профилям
-
Есть 2 ссд диска,на обоих хранятся профиля,надо чтоб скрипт проходил сначала по профилям на одном диске потом по профилям на втором.Скрипт берет адрес(F://test) из ресурса и соответственно идет на ф диск в папку тест и там уже берет нужные профлиля.Имена профилей берутся из ресурса файла txt.Теперь вопрос как лучше всего организовать смену диска когда скрипт пройдет все профиля на ф диске?
-
думал над таким вариантом.Ложим при старте в глобальную переменную диск(F,D и т.д)а в списке метку когда надо переходить на другой диск,когда скрипт натыкается на метку меняет диск в глобальной переменной.Ну и соответственно берем нужный диск из глобальной переменной
-
-
@tet-vivi said in совет по профилям:
N - текущий номер потока
(N + "").indexOf(".") > 0если true - то нечетный поток(диск 1), если false - четный (диск 2).
Вы переводите номер потока в строку и ищете в ней точку начиная со второго символа? Для чего это всё?
Вот условие, чтобы разделить потоки на чётные и не чётные:
[[THREAD_INDEX]] % 2 == 0
тестовый скрипт
-
@Fox said in совет по профилям:
@tet-vivi said in совет по профилям:
N - текущий номер потока
(N + "").indexOf(".") > 0если true - то нечетный поток(диск 1), если false - четный (диск 2).
Вы переводите номер потока в строку и ищете в ней точку начиная со второго символа? Для чего это всё?
Вот условие, чтобы разделить потоки на чётные и не чётные:
[[THREAD_INDEX]] % 2 == 0
тестовый скрипт
дал первое попавшие решение определение дробности из поисковика
p.s. дай заодно определение последней строки с данными(см. выше)
-
@tet-vivi said in совет по профилям:
p.s. дай заодно определение последней строки с данными(см. выше)
Какое определение? не нашёл в теме упоминание об этом
@xtra said in совет по профилям:
Есть 2 ссд диска,на обоих хранятся профиля,надо чтоб скрипт проходил сначала по профилям на одном диске потом по профилям на втором.Скрипт берет адрес(F://test) из ресурса и соответственно идет на ф диск в папку тест и там уже берет нужные профлиля.Имена профилей берутся из ресурса файла txt.Теперь вопрос как лучше всего организовать смену диска когда скрипт пройдет все профиля на ф диске?
Вы сами себе создали проблему на ровном месте. Раз вы используете текстовый файл с именами профилей, включите тогда полный путь до папки профиля в этот текстовик и проблемы переключения между дисками не станет.
-
@Fox said in совет по профилям:
@tet-vivi said in совет по профилям:
p.s. дай заодно определение последней строки с данными(см. выше)
Какое определение? не нашёл в теме упоминание об этом
как определить что текущий элемент в ресурсе последний в списке
-
@tet-vivi said in совет по профилям:
@Fox said in совет по профилям:
@tet-vivi said in совет по профилям:
p.s. дай заодно определение последней строки с данными(см. выше)
Какое определение? не нашёл в теме упоминание об этом
как определить что текущий элемент в ресурсе последний в списке
Узнать индекс текущего элемента действием "Получить Индекс" и сравнить с количеством элементов в списке - 1 (действие "Количество Элементов").
-
@Fox можно но не совсем удобно.К примеру переносим папки с профилями на другой диск,прийдется переписывать весь файл.Изначально делал чтоб путь указывался при запуске в ресурсе,небыло расчета что будет использоватся 2 диска под использование профилей.
Всем спасибо думаю оптимальный вариант решения моего вопроса найден