JawsIk
@JawsIk
Python (Django), Lua, ЧПУ-станки(ArtCam, Aspire)

Как для многопоточности, используя executor.map, передавать в фукнцию много параметров, а один итерировать?

Есть функция брута (перебора кода), которая запускает итерацию отдельной функцией

def checkCode(session, code, code_for_url, referer):
    pass

def bruteCode(s, url_code, referer):
    start_code = 110000
    end_code = 111000

     for code in range(start_code, end_code + 1):
            s, success = checkCode(s, code, url_code, referer)  # проверяем код
            if success:
                return code


Читаю вот эту статью, где за основу хочу взять вот такой пример:
from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(concurrency) as executor:
    for _ in executor.map(upload, queryset):
        pass


и не могу понять, как мне переделать свой for, чтобы checkCode запускать многопоточно.
допустим:
worker = 10
    with ThreadPoolExecutor(worker) as executor:
        # и дальше затык. 
        # 1. Как мне передать в executor.map свою checkCode c кучей параметров, 
        # но где будет постоянно меняться параметр code
        # 2. Как мне указать диапазон?
        # 3. В примере стоит в цикле pass, мне тоже нужно писать pass?
        for code in range(start_code, end_code + 1):
            s, success = checkCode(s, code, url_code, referer)  # проверяем код
            if success:
                return code


С уважением.
p.s. в голове крутитятся какие-то yield, но я их никогда не использовал, а только когда-то читал вскользь и не понял толком применения. Если они нужны, то напишите пример пожалуйста. (если примера нет, то лучше ничего не писать)
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
@deliro
Агрессивное программирование
functools.partial
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
21 окт. 2019, в 22:35
500 руб./за проект
21 окт. 2019, в 21:56
10000 руб./за проект
21 окт. 2019, в 21:06
600 руб./в час