Уникальный прокси из списка для каждого потока в скрипте на python

Есть многопоточный скрипт на python, который получает данные с ссылок. Есть пакет прокси. Как можно сделать чтобы для каждого потока бралась своя уникальная прокси из массива с прокси? Сейчас каждый поток берет случайную, но получаются проблемы когда несколько потоков берут одну и ту же прокси:

with open('proxy.txt') as file:
    proxies = [row.strip() for row in file]
num_threads = 50

def get_article(page):
    proxy = random.choice(proxies)
with ThreadPoolExecutor(max_workers=num_threads) as pool:
    pool.map(get_article, links)

В proxy.txt 100 штук прокси.


Ответы (1 шт):

Автор решения: Ara_Bog

Вы можете разделить ваши данные с прокси на двумерный массив 10х10 и для каждого потока использовать свои 10 прокси используя threading.get_ident()

UPD: не знаю решает ли это вашу проблему, но я создал словарь в котором каждому потоку выделен свой блок proxies

введите сюда описание изображения

import concurrent.futures as cf

num_threads = 50
links = [i for i in range(0, 100)]  # 100 ссылок
proxies = [[i for i in range(0, 2)] for _ in range(
    0, num_threads)]  # прокси в массиве 50х2
dict_threads = {}
count_threads = 0


def get_article(z):
    global count_threads
    current_thread = threading.get_ident()
    # резервирование потоком своей части proxi
    if current_thread not in dict_threads:
        dict_threads.update({current_thread: count_threads})
        count_threads += 1
    return


with cf.ThreadPoolExecutor(max_workers=num_threads, thread_name_prefix='my') as pool:
    pool.map(get_article, links)

print(dict_threads)
input()
→ Ссылка