Python-进程池

进程池:

可以指定一个最大进程数,当有新的请求提交到进程池中。

如果池中的进程数还没有满,那么就会创建一个新的进程用来执行该请求。

如果池中的进程数满了,该请求就会等待,直到进程池中的进程结束,才会使用这个结束的进程来执行新的任务。

 

作用:限制并发程序的数量,并简易创建程序的步骤。

方法:

multiprocessing.Pool.apply_async(func=def,args=([,],))

func=所调用的函数

args=向函数中传递的参数,多个参数用元祖表示。

创建时进程池括号中的数字表示并发的数量,也就是同一时刻进程池中的进程数。

import time
from multiprocessing import Process,Queue,Pool
def foo(i):
    print('i1的值是:',i)
    time.sleep(3)
    print('end...')
def foo2(i):
    print('i2的值是:',i)
    time.sleep(3)
    print('end...')
if __name__=='__main__':
    pool=Pool(3)#创建进程池对象
    for i in range(5):
        pool.apply_async(func=foo,args=(i,))#将任务添加到进程池里
        pool.apply_async(func=foo2,args=(i,))
    pool.close()#关闭进程池,等待所有进程结束才关闭进程池
    pool.join()#主进程等待所有子进程执行完毕后主进程才往下执行,必须在close后面

pool.close() 关闭进程池,等待所有进程结束才关闭进程池。

pool.join() 主进程等待所有子进程执行完毕后再执行此行之后的代码。必须写在close后面。

 

并发:同一时刻一个程序一对一,一个CPU;同一时段多程序对一个CPU争夺。Python是单核运行,所以程序都是并发的。

并行:同一时刻多程序一对一多个CPU运行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值