У меня был очень похожий опыт, но я остановился на другом решении.
Я тоже тестировал скрипт на 8 ядерном 32 гб дедике с широким каналом и там еле еле 10 потоков шло.
Работающими решением оказалось взять 32 ядерный локальный сервер с 64 оперативки, на не очень быстром канале, с сокс5, на нем 100+ потоков запускалось.
Скрипт тот же, никаких оптимизаций не делалось.
Стоит конечно побольше, чем аренда дедика но тут уж зависит от окупаемости твоей темы, стоит ли оно того или нет.
Но соксы могут быть узким местом, по возможности нужно делать свои соксы. Для этого, можно брать дешевые VPS и установить сокс через опенсурсный софт microsocks для линукса (в инете полно инструкций по установке, занимает не более 5 минут вручную, и можно установку через БАС автоматизировать также на случай если нужны сотни соксов).
Вопрос по разделению потоков
-
У меня есть 3 потока, в каждом их них я хочу получать номер, а затем использовать его в этом ж потоке еще 2 раза, как это реализовать? Метод когда я использую номер 3 раза в 3-ех разных потоках не подходит, так как прежде чем привязать номер ко второму потоку, нужно чтобы первый завершился. Знает ли кто как это можно реализовать?
-
@nedarwin1217 said in Вопрос по разделению потоков:
У меня есть 3 потока, в каждом их них я хочу получать номер, а затем использовать его в этом ж потоке еще 2 раза, как это реализовать? Метод когда я использую номер 3 раза в 3-ех разных потоках не подходит, так как прежде чем привязать номер ко второму потоку, нужно чтобы первый завершился. Знает ли кто как это можно реализовать?
Создаете глобальную переменную. С буквой А.
На 1 потоке при завершении ставим к ней АБ, в то же время на 2 потоке ставим ожидание наличие у глобалки АБ если есть работаем с номером, нету спим 10 сек и проверяем снова.
При достижении цели на 2 потоке к АБ пишем В, которую ждет 3 поток.Либо с цифрами 1,2,3