温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python进程池基本概念是什么

发布时间:2022-03-31 10:22:32 来源:亿速云 阅读:177 作者:iii 栏目:开发技术

这篇文章主要介绍“Python进程池基本概念是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python进程池基本概念是什么”文章能帮助大家解决问题。

    前言:

    创建进程池可以形象地理解为创建一个并行的流水线,只需创建一次流水线的消耗,处理接收到的任务的,不使用进程池。 ,浪费时间。

    中方本来没有进程的,除了python的,使用线程池的语言,是进程的其他线程池(而进程是执行业务的其他任务)。python的原因(因为Cython的概念),线程编程不同的并行,把线程池的概念转移到了进程中,命名为进程池。

    一、python进程池

    创建的子进程数量不多时,可以直接利用多处理进程中的进程动态形成需要的进程。

    如果是上百量甚至巨大上千,手动的去创建进程的工作目标,此时就可以为多进程模块提供池的方法。

    1、初始化 Pool 时,可以指定一个进程数

    2、当有新的请求提交到 Pool 中时

    • 如果池还没有满,那么就用创建一个新进程的执行该请求;

    • 如果池中的进程达到指定的任务,那么已经有多少时间,直到有进程结束,会用之前的请求进程来执行新的任务。

    二、进程池如何使用?

    申请()

    函数原型:apply (func, args=()[, kwds={}]])

    该函数传递不定参数,同 python 中的应用函数一致,主进程会被阻止函数执行结束(不建议使用,并且 3.x 以后不再出现使用)

    apply_async

    函数原型:apply_async(func[, args=()[, kwds={}[, callback=None]]])

    与应用一致,但它是非进行不支持的使用支持结果返回后反对

    地图()

    函数原型:map(func, iterable[, chunksize=None])

    池类中的映射表的行为必须基本一致,它会使用第二个进程与先前的结果返回:

    但在实际使用中,参数是一个调用,在整个应用程序中都需要注意,程序会运行子进程。

    map_async()

    函数原型:map_async(func, iterable[, chunksize[, callback]])

    与地图匹配一致,但它是非阻尼的。

    close()

    关闭进程池(pool),不再接受新的任务。

    终端()

    结束工作进程,不再处理未处理的任务。

    加入()

    主进程停止等待子进程的退出,加入方法要在关闭或终止使用之后。

    三、代码实列

    # 导入相关multiprocessing包
    import multiprocessing
    
    # 创建拥有CPU核心数量的进程的进程池
    pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
    
    for i in  range ( 100 ): ##制动等待当前任务的进程结束# pool.apply(func=pow, args=(i,2))
        
        
    
        # 不延迟当前任务的进程结束
        pool.apply_async(func= pow , args=(i, 2 ))
    
    # # map函数到一个列表,延迟返回值
    # results = pool.map(func=print, iterable=[i for i in range(10000)])
    
    # # 不延迟等待返回值,未运行完就调用results会报错。
    # results = poolmap_async(func=print, iterable=[i for i in range(10000)])
    
    #close之后不会有新的进程加入到pool
     pool.close()
    
    #加入函数等待所有子进程#调用加入之前,先结束调用close函数,否则会出错。
     pool.join()
    
    # # 结束工作进程,不再处理未完成的任务。
    # pool.terminate()

    四、进程池中的进程和一般的进程有什么区别?

    进程池中的Queue:

    • 如果要使用进程池创建进程,就需要使用multiprocessing.Manager()中的Queue(),而不是multiprocessing.Queue()

    • 使用的方法是一样的,都已经成功了,再用q.put()添加、q.get()等待获取。

    关于“Python进程池基本概念是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI