前言

这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题

于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。

微信小程序搜索:Python面试宝典

或可关注原创个人博客:https://lienze.tech

也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习

进程池

当我们使用传统的Process来创建进程时,小规模进程量还OK,但是一旦需要成百上千的进程,可以通过构建进程池解决;池的真正的并发数量由CPU核数决定

在任务开启时,每个任务会到进程池中获取对应进程资源

如果没有可用进程,那么任务会被挂起等待,直到有新的进程资源去接管处理他

from multiprocessing import Pool
p = Pool(3,maxtasksperchild)
'''
maxtasksperchild: 指明一个进程同时可以执行的最大工作数
'''
# 创建一定个数的进程池
p.apply(func, args)
# 阻塞方式,调用函数及传入参数,下个进程阻塞直到上个进程结束
p.apply_async(func, args)
# 非阻塞方式,调用函数及传入参数,并发完成任务
p.close()
# 关闭进程池不在接收新的任务进入
p.join()
# 父进程等待全部子进程结束,必须在close函数之后
p.terminat()
# 直接关闭进程池并终止所有进程任务
  • 获取进程池返回值
res = p.apply()     # 阻塞多进程执行函数返回值 即为任务函数的返回值
res = p.apply_async() # 非阻塞多进程执行函数返回值是一个结果对象
'''- res.get() 即可获得任务函数的返回值
'''
res = p.map(func, range(10)) # 进程池中的map函数类似普通map函数,将一个序列中的每个值作为参数传递到任务函数中,返回值也将是一个序列对象,用来保存每个进程任务返回的结果,该函数为阻塞直到结果出现
res = p.map_async() # 执行之后,为一个抽象任务队列,只有真正使用 res.get()获取值时,任务进程才会执行,并且为非阻塞方式运行
  • 进程池代码示例
from multiprocessing import Pool,current_process
import time
import sys
def work(num):time.sleep(0.5)print('当前进程是:',current_process().name,':',num)return numdef main():p = Pool(3)print("开启进程")res = []for var in range(10):res.append(p.apply(func=work,args=(var,)))# res.append(p.apply_async(func=work,args=(var,)))p.close() #关闭进程池p.join()print(res) # apply # for var in res: # apply_async#    print(var.get(),end=' ')print('\nover')if __name__ == '__main__':main()

进程池加锁

本身的多进程apply函数已经是阻塞模式,所以加锁意义不大

当遇到apply_async函数时,由于此时为真正的异步,我们可能需要在进程池内进行锁操作

  • 可以使用如下进行同步管理
from multiprocessing import Manager
lock  = Manager().Lock()
semphore = Manager().Semaphore()

进程池加锁

本身的多进程apply函数已经是阻塞模式,所以加锁意义不大

当遇到apply_async函数时,由于此时为真正的异步,我们可能需要在进程池内进行锁操作

  • 可以使用如下进行同步管理
from multiprocessing import Manager
lock  = Manager().Lock()
semphore = Manager().Semaphore()

Python进程池Pool、进程池通信相关推荐

  1. Python 多进程笔记 — 启动进程的方式、守护进程、进程间通信、进程池、进程池之间通信、多进程生产消费模型

    1 面向过程启动多进程 Python 操作进程的类都定义在 multiprocessing 模块,该模块提供了一个 Process 类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另 ...

  2. python全栈开发,Day40(进程间通信(队列和管道),进程间的数据共享Manager,进程池Pool)...

    昨日内容回顾 进程 multiprocess Process -- 进程 在python中创建一个进程的模块startdaemon 守护进程join 等待子进程执行结束锁 Lock acquire r ...

  3. python队列线程池_实例详解:python高级编程之消息队列(Queue)与进程池(Pool)

    今天为大家带来的内容是:python高级编程之消息队列(Queue)与进程池(Pool),结合了实例的形式详细分析了Python消息队列与进程池的相关原理.使用技巧与操作注意事项!!! Queue消息 ...

  4. python进程池调用实例方法_Python进程池Pool应用实例分析

    本文实例讲述了Python进程池Pool应用.分享给大家供大家参考,具体如下: 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百 ...

  5. python 使用进程池Pool进行并发编程

    进程池Pool 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到mu ...

  6. python进程池pool_python多任务--进程池Pool

    进程池Pool 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中 ...

  7. python并行计算进程池通信_Python使用进程池管理进程和进程间通信

    与线程池类似的是,如果程序需要启动多个进程,也可以使用进程池来管理进程.程序可以通过 multiprocessing 模块的 Pool() 函数创建进程池,进程池实际上是 multiprocessin ...

  8. python 进程池pool使用详解

    和选用线程池来关系多线程类似,当程序中设置到多进程编程时,Python 提供了更好的管理多个进程的方式,就是使用进程池. 在利用 Python 进行系统管理的时候,特别是同时操作多个文件目录,或者远程 ...

  9. python 进程池 freeze_support_Python 多进程并发操作中进程池Pool的实例

    在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中的Process ...

最新文章

  1. Ubuntu下Sublime Text 3解决无法输入中文的方法
  2. 使用测微计收集应用程序指标
  3. android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog
  4. Python之旅:集合
  5. Python图像的基本操作
  6. 别人问了个问题:有没有选择JAVA开发的设计文档
  7. java复制类mytool,JAVA Beans复制Utils比较
  8. YYKit源码学习——YYMemoryCache
  9. 无人机怎么设定航线_飞行航线设置方法及装置与流程
  10. 大数据开源框架环境配置(一)——安装VMware
  11. 兆比特每秒和兆字节每秒_bit ( 比特 )和 Byte(字节)的关系 以及 网速怎么算
  12. Spring Boot(二):整合 JPA 及 事务控制
  13. html5 meta keywords,HTML中meta标签及Keywords介绍
  14. 计划招收300人,复旦大学计算机学院2022年夏令营来袭
  15. 【ODX介绍】-4.3-UDS诊断$3E服务在ODX-D诊断描述文件中如何描述
  16. 【软件网每日新闻播报│第9-27期】
  17. 知识点:matplotlib绘图的线条设置以及颜色设置
  18. 方阵的特征值和特征向量的求解案例(二阶方阵)
  19. 嵌入式开发板如何自动登陆校园网实现上网
  20. python实现屏幕视频录制_用Python来做一个屏幕录制工具

热门文章

  1. 中国眼科医院行业市场深度调研与未来创新方向分析报告2022-2028年
  2. 音视频开发进阶指南:基于iOS实现超低延时耳返
  3. 配音软件哪个好用?2023比较火的配音软件app推荐
  4. 【Simulink】基于FCS-MPC的单相并网逆变器控制(Matlab Function)
  5. vue中的ref属性
  6. ElementUI上传图片后,清除缓存
  7. 计算机中的二进制表示(定点数,浮点数)
  8. Scheduler模块详解
  9. 这些Android面试题,成就你高薪就业。
  10. 手机端html返回顶部,移动端H5页面返回顶部按钮无效问题的解决