首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >multiprocessing.map_async挂起(但multiprocessing.map工作正常)

multiprocessing.map_async挂起(但multiprocessing.map工作正常)
EN

Stack Overflow用户
提问于 2020-02-06 12:24:20
回答 1查看 241关注 0票数 1

我试图在我的程序中并行化一段代码。

如果我使用multiprocessing.map_async (或starmap_async),代码挂在results.get()上。但是,如果我使用map (或starmap),代码将正确执行。下面是一个最低限度的工作示例,我可以用它来再现这种行为:

代码语言:javascript
复制
from multiprocessing import Pool

def function(i):
    return i**2

if __name__ == '__main__':
    print('map')
    with Pool(6) as pool:
        result = pool.map(function, range(100))

    print(result)

    print('map_async')
    with Pool(6) as pool:
        result = pool.map_async(function, range(100))

    print('Getting results')
    print(result.get())

代码(几乎立即)运行到行print('Getting results'),然后挂起。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-06 12:42:21

调用print(result.get())时,您已经离开了上下文管理器,因此池已经关闭。缩进你的指纹:

代码语言:javascript
复制
with Pool(6) as pool:
    result = pool.map_async(function, range(100))
    print('Getting results')
    print(result.get())  # <--
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60094970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档