首页 > 解决方案 > 对于 multiprocessing.Pool(),初始化选项有哪些?

问题描述

我正在尝试更新一段代码,并且用于 multiprocessing.Pool() 的初始化程序值/函数在我运行它时导致 AttributeError 。我已经查看了文档和一堆相关的(ish)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:Can't get attribute 'set_global_session' on”。

标签: pythonmultiprocessingdocumentationinitializer

解决方案


推荐阅读