@Svoboo

Как на python для каждого потока брать свою группу proxy?

Есть многопоточный парсер текста со страниц вида:
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 лежит 200 штук прокси. Скрипт работает в 50 потоков. Подскажите, как каждому потоку назначить свою группу прокси?
  • Вопрос задан
  • 145 просмотров
Решения вопроса 1
@deliro
Самый простой вариант, как равномерно размазывать нагрузку:

from collections import deque
from concurrent.futures import ThreadPoolExecutor

def load_proxies():
	with open('proxy.txt') as f:
		return deque([row.strip() for row in f])

def get_article(proxies, link):
	proxy = proxies.popleft()
	try:
		print("working with proxy", proxy, link)
	finally:
		proxies.append(proxy)

def main():
	proxies = load_proxies()
	with ThreadPoolExecutor(max_workers=50) as pool:
		pool.map(lambda link: get_article(proxies, link), ["link1", "link2"])


if __name__ == "__main__":
	main()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы