【Python】独特的进程池概念

博主介绍

🌊 作者主页:苏州程序大白

🌊 作者简介:🏆CSDN人工智能域优质创作者🥇,苏州市凯捷智能科技有限公司创始之一,目前合作公司富士康、歌尔等几家新能源公司

💬如果文章对你有帮助,欢迎关注、点赞、收藏(一键三连)和C#、Halcon、python+opencv、VUE、各大公司面试等一些订阅专栏哦

💅 有任何问题欢迎私信,看到会及时回复
💅关注苏州程序大白,分享粉丝福利

前言

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

中方本来没有进程的,除了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()等待获取。

💫点击直接资料领取💫

在这里插入图片描述

这里有各种学习资料还有有有趣好玩的编程项目,更有难寻的各种资源。 ​ ​

❤️关注苏州程序大白公众号❤️

👇 👇👇

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏州程序大白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值