前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python进程池的使用

python进程池的使用

作者头像
灯珑LoGin
发布2022-10-31 09:31:10
1K0
发布2022-10-31 09:31:10
举报
文章被收录于专栏:龙进的专栏

进程池(Pool)可以提供指定数量的进程供用户使用。主要是起限制进程数量的作用。当新的请求提交到pool时,如果进程池没有满,那么就可以创建一个新的进程来响应请求。如果进程池满了,那么就要等到有进程结束,才可以创建新的进程。

上代码

代码语言:javascript
复制
import multiprocessing
import time


def process_func(process_id):
    print('process id %d start' % process_id)
    time.sleep(3)
    print('process id %d end' % process_id)


def main():
    pool =multiprocessing.Pool(processes=3)

    for i in range(10):
        #向进程池中添加要执行的任务
        pool.apply_async(process_func, args=(i, ))
    print('applied')
    #先调用close关闭进程池,不能再有新任务被加入到进程池中
    pool.close()

    #用join函数等待所有子进程结束
    pool.join()
    print('joined')

if __name__ == '__main__':
    main()

如果每次调用的都是同一个函数,可以使用Pool的map函数。

把上面的例子改一行代码就好了

代码语言:javascript
复制
import multiprocessing
import time


def process_func(process_id):
    print('process id %d start' % process_id)
    time.sleep(3)
    print('process id %d end' % process_id)


def main():
    pool =multiprocessing.Pool(processes=3)

    #向进程池中添加要执行的任务
    pool.map(process_func, range(10))
    print('applied')
    #先调用close关闭进程池,不能再有新任务被加入到进程池中
    pool.close()

    #用join函数等待所有子进程结束
    pool.join()
    print('joined')

if __name__ == '__main__':
    main()

map的第一个参数是要执行的函数,第二个参数必须是一个可迭代对象。map方法会自动地帮助我们迭代第二个参数,并把迭代出的元素作为参数分批传递给第一个要执行的函数并执行。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年8月22日2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档