Пользовательский рабочий пул, как описано здесь: https://docs.python.org/3.7/library/multiprocessing.html
from multiprocessing import Pool
def test_url(code):
''' insert code to test URL '''
pass
if __name__ == '__main__':
with Pool(5) as p:
print(p.map(test_url, [code1,code2,code3]))
Просто имейте в виду, что веб-сайт может ограничивать количество запросов, которые вы делаете.
КомуЕсли быть более конкретным с вашим примером, я бы разбил его на две фазы: (1) генерировать тестовые коды (2) тестовый URL, учитывая один тестовый код .Получив список сгенерированных кодов, вы можете применить вышеуказанную стратегию применения верификатора к каждому сгенерированному коду, используя рабочий пул.
Чтобы сгенерировать тестовые коды, вы можете использовать itertools:
codes_to_test = [''.join(i) for i in itertools.product(string.ascii_lowercase, repeat = 5)]
Вы лучше понимаете, как тестировать URL с одним тестовым кодом, поэтому я предполагаю, что вы можете написать функцию test_url(test_code)
, которая сделает соответствующий запрос URL и при необходимости проверит результат.Затем вы можете позвонить:
with Pool(5) as p:
print(p.map(test_url, test_codes))
Кроме того, я бы предложил две вещи: сначала убедитесь, что test_codes
не является огромным (например, взяв подсписок этих сгенерированных кодов), чтобы убедиться, чтоваш код работает правильно и (2) вы можете играть с размером рабочего пула, чтобы не перегружать вашу машину или API.
В качестве альтернативы вы можете использовать asyncio (https://docs.python.org/3/library/asyncio.html), чтобы сохранить всев одном процессе.