V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
oldbird
V2EX  ›  Python

多进程中 map 和 apply_async 是什么区别?

  •  
  •   oldbird · 2020-06-13 11:06:22 +08:00 · 2635 次点击
    这是一个创建于 1657 天前的主题,其中的信息可能已经有所发展或是发生改变。

    pool.map()

    pool.apply_async()

    pool.stop()

    pool.join()

    什么区别?

    3 条回复    2020-06-14 19:31:24 +08:00
    lithbitren
        1
    lithbitren  
       2020-06-13 18:08:25 +08:00
    map 放在进程池里并行计算,这个语句是阻塞的,apply_async 单个函数放进池里计算非阻塞的。
    stop 没见过,join 是阻塞到所有 apply_async 产生的进程执行结束
    oldbird
        2
    oldbird  
    OP
       2020-06-14 03:43:11 +08:00
    @lithbitren 谢谢,记错了,不是 stop,是 close
    在使用 map 时,发现有的直接写到 pool.map()就可以了,有的还在后面加上 pool.close()、pool.join(),不知道这两种用法什么区别?
    lithbitren
        3
    lithbitren  
       2020-06-14 19:31:24 +08:00
    @oldbird 官方文档其实讲的都听清楚的,不写 close 一般是 map 放在 with 的块里面,块结束的时候会自动关闭,一般不用添加其他语句,apply_async 一般都不放块里,所以要手动关闭,关闭了以后才能 join
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1073 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:10 · PVG 03:10 · LAX 11:10 · JFK 14:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.