python之进程池

初始化Pool时,可以指定⼀个最⼤进程数,

当有新的请求提交到Pool中时, 如果池还没有满,那么就会创建⼀个新的进程⽤来执⾏该请求;

但如果池中 的进程数已经达到指定的最⼤值,那么该请求就会等待,直到池中有进程结 束,才会创建新的进程来执行

from multiprocessing import Pool

import os

import random

import time


def worker(num):

    for i in range(5):

        print("===pid=%d==num=%d="%(os.getpid(), num))

        time.sleep(1)


#3表示 进程池中对多有3个进程一起执行

pool = Pool(3)

for i in range(10):

    print("---%d---"%i)

    #向进程池中添加任务

    #注意:如果添加的任务数量超过 进程池中进程的个数的话,那么不会导致添加不进入

    #       添加到进程中的任务 如果还没有被执行的话,那么此时 他们会等待进程池中的

    #       进程完成一个任务之后,会自动的去用刚刚的那个进程 完成当前的新任务

    pool.apply_async(worker, (i,))

    #pool.apply(worker, (i,))#堵塞的方式


pool.close()#关闭进程池,相当于 不能够再次添加新任务了
pool.join()#主进程 创建/添加 任务后,主进程 默认不会等待进程池中的任务执行完后才结束 而是 当主进程的任务做完之后 立马结束,,,如果这个地方没join,会导致 进程池中的任务不会执行

pool.join()#主进程 创建/添加 任务后,主进程 默认不会等待进程池中的任务执行完后才结束 而是 当主进程的任务做完之后 立马结束,,,如果这个地方没join,会导致 进程池中的任务不会执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值