Для multiprocessing.Pool (), каковы параметры инициализатора? - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь обновить часть кода, и значение / функция инициализатора, используемая для многопроцессорной обработки. Poo () вызывает AttributeError при запуске. Я просмотрел документацию и стопку релевантных (i sh) результатов Google, но я не могу найти ничего, объясняющего, чем может и не может быть инициализатор, или каких-либо существенных деталей. о том, как его использовать. Как найти дополнительную информацию по этому вопросу?

РЕДАКТИРОВАТЬ: Код, пытающийся обновить это фрагмент кода из статьи Real Python о параллелизме .

import requests
import multiprocessing
import time

session = None


def set_global_session():
    global session
    if not session:
        session = requests.Session()


def download_site(url):
    with session.get(url) as response:
        name = multiprocessing.current_process().name
        print(f"{name}:Read {len(response.content)} from {url}")


def download_all_sites(sites):
    with multiprocessing.Pool(initializer=set_global_session) as pool:
        pool.map(download_site, sites)


if __name__ == "__main__":
    sites = [
        "https://www.jython.org",
        "http://olympus.realpython.org/dice",
    ] * 80
    start_time = time.time()
    download_all_sites(sites)
    duration = time.time() - start_time
    print(f"Downloaded {len(sites)} in {duration} seconds")

Когда я запускаю его, он просто постоянно выдает «AttributeError: Не удается получить атрибут 'set_global_session' on».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...