@D55RUS

Как правильно сделать многопоток python?

Такая вот суть. У меня есть список из 150 проксей
Мне нужно для каждой прокси запустить отдельный поток, в котором 18 раз в секунду кидается запрос на сервер

Я запускаю потоки:
proxy_threads_list = []
    for x in s.proxy_data:
        proxy_threads_list.append(Thread(target=start_parsing, args=(s.proxy_data[x], x)))

    for k in proxy_threads_list:
        k.start()
        time.sleep(0.1)


После этого, в каждом потоке:
def start_parsing(auth, proxy):
    utils.log(f'Bot start thread with proxy: {proxy}')
    if proxy is None:
        while True:
            pool_list = []
            pool = ThreadPool(processes=18)
            for x in range(18):
                pool_list.append(pool.apply_async(parser_f.get_binance_price, args=(None,)))
                time.sleep(0.056)
    else:
        proxy_data = {"proxies": f'{proxy}:{auth["port"]}'}
        while True:
            pool_list = []
            pool = ThreadPool(processes=18)
            for x in range(18):
                pool_list.append(pool.apply_async(parser_f.get_binance_price, args=(proxy_data,)))
                time.sleep(0.056)

Так вот, если я запускаю всего в несколько проксей, то в целом все адекватно, но опять же, например с 10 проксями должно быть 180 запросов/сек, но проходит всего 40-60. Ладно, а с 150 проксями, производительность вообще не растет, поднимается всего до 70-100 запросов/сек.
Ответ от сервера идет в среднем 0,08-0,1с

В теории, должно на 150 проксей должно быть 2 700 запросов, но опять же, получается в 27 раз меньше
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы