文章目录

  • python进程池与线程池
    • 思考
    • 简介
    • 进程池与线程池基本使用
      • concurrent.futures 介绍
      • 基本方法
      • 使用示例

python进程池与线程池

思考

能否无限制的开设进程或者线程?

1.单从技术层面来说,无限开设进程或线程是肯定可以的,并且这样也是最高效的
2.但是,由于硬件的原因,这个是实现不了的(毕竟硬件的发展永远都赶不上软件的发展速度),因此,就目前而言,肯定是不可以实现无限制开设进程或者线程

简介

池是什么?

  • 池是为了在保证计算机硬件安全的情况下提升程序运行效率的工具

进程池:

  • 指提前开设好一堆进程,只需要朝池子中提交任务,任务会自动分配给空闲的进程处理,并且池子中的进程创建好后就不会更替

线程池:

  • 提前开设好一堆线程,只需要朝池子中提交任务,任务会自动分配给空闲的线程处理,并且池子中的线程创建好了之后就不会更替

进程池与线程池基本使用

  • python中进程池线程池的使用,有专门的模块来调用(Python标准模块——concurrent.futures)

concurrent.futures 介绍

concurrent.futures模块提供了高度封装的异步调用接口

ThreadPoolExecutor:线程池,提供异步调用

ProcessPoolExecutor:进程池,提供异步调用

基本方法

submit(fn, *args, **kwargs):异步提交任务map(func, *iterables, timeout=None, chunksize=1):取代for循环submit的操作shutdown(wait=True):相当于进程池的pool.close()+pool.join()操作wait=True,等待池内所有任务执行完毕回收完资源后才继续wait=False,立即返回,并不会等待池内的任务执行完毕但不管wait参数为何值,整个程序都会等到所有任务执行完毕注意: submit和map必须在shutdown之前result(timeout=None):取得结果add_done_callback(fn):回调函数done():判断某一个线程是否完成cancle():取消某个任务

使用示例

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
import time, os# 创建进程池与线程池
# pool = ThreadPoolExecutor(5)  # 可以自定义线程数 也可以采用默认策略  默认是cpu核数
pool = ProcessPoolExecutor(5)  # 可以自定义进程程数 也可以采用默认策略# 定义一个任务
def task(n):print(n, os.getpid())time.sleep(2)return '>>>:%s' % n ** 2# 定义一个回调函数:异步提交完之后有结果自动调用该函数
def call_back(a):print('异步回调函数:%s' % a.result())if __name__ == '__main__':
# 方案1# obj_list = []     # 解决问题1# for i in range(20):#     res = pool.submit(task,i)#     # print(res.result())   # result()直接放在submit下方,会使异步变同步 问题1#     obj_list.append(res)## # 等待线程池中所有的任务执行完毕之后 再获取各自任务的结果# pool.shutdown()# for i in obj_list:#     print(i.result())  # 获取任务的执行结果  同步# 方案二  使用add_done_callback回调函数for i in range(20):res = pool.submit(task, i).add_done_callback(call_back)  # 异步提交,此方法不能配合shutdown使用"""
同步:提交完任务之后原地等待任务的返回结果 期间不做任何事
异步:提交完任务之后不愿地等待任务的返回结果 结果由异步回调机制自动反馈
"""

python进程池与线程池相关推荐

  1. python线程池模块_python并发编程之进程池,线程池,协程

    需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...

  2. 《转载》Python并发编程之线程池/进程池--concurrent.futures模块

    本文转载自 Python并发编程之线程池/进程池--concurrent.futures模块 一.关于concurrent.futures模块 Python标准库为我们提供了threading和mul ...

  3. Python 37 进程池与线程池 、 协程

    一:进程池与线程池 提交任务的两种方式: 1.同步调用:提交完一个任务之后,就在原地等待,等任务完完整整地运行完毕拿到结果后,再执行下一行代码,会导致任务是串行执行 2.异步调用:提交完一个任务之后, ...

  4. python线程池模块_python并发编程之进程池,线程池,协程(Python标准模块--concurrent.futures(并发未来))...

    需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...

  5. python 进程池阻塞和非阻塞_python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)...

    9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型池子内什么时候装线程:并发的任务属于IO ...

  6. python进程池和线程池_Python中的进程池与线程池(包含代码)

    引入进程池与线程池 使用ProcessPoolExecutor进程池,使用ThreadPoolExecutor 使用shutdown 使用submit同步调用 使用submit异步调用 异步+回调函数 ...

  7. python进程池和线程池_python自带的进程池及线程池

    进程池 """ python自带的进程池 """ from multiprocessing import Pool from time im ...

  8. python是如何实现进程池和线程池的_高并发:线程、线程锁与线程池(精华),手写代码实现线程池...

    前文: 单线程--多线程的开启--线程锁--线程同步工具--手写连接池--连接池工具类. 一.线程 1.线程的概念 2.线程与进程的关系 3.定义: 区别:如上!!! 4.wait()和sleep() ...

  9. python 进程池 等待数量_【2020Python修炼记】python并发编程(六)补充—进程池和线程池...

    1. 2. 为啥要有 进程池和线程池 进程池来控制进程数目,比如httpd的进程模式,规定最小进程数和最大进程数 3.创建进程池的类pool 如果指定numprocess为3,则进程池会从无到有创建三 ...

最新文章

  1. 写给正在入坑linux系统的伙伴
  2. python3 32位_Python3.8.2安装教程
  3. 数据库系统概念总结:第十一章 索引与散列
  4. Spring Cloud 基于Consul 实现服务注册与发现
  5. android iphone对比度,对比度对比:显示器优势明显_苹果 MacBook Pro_液晶显示器评测-中关村在线...
  6. 安卓--selector简单使用
  7. Unity Shader之入门-helloworld
  8. 执行mount挂载命令 报错:mount: you must specify the filesystem type
  9. [论文翻译] Estimation of Image Rotation Angle Using Interpolation-Related Spectral Signatures
  10. 面试题10-二进制中1的个数
  11. Python转义字符
  12. 爬虫清洗:python strip()函数 去空格\n\r\t函数的用法
  13. C语言——函数的一些基本概念
  14. 蜜蜂路线图c语言思路,打蜜蜂(c语言)(Hit the bee (C language)).doc
  15. 博升机器人_乐博乐博机器人
  16. 职称计算机考试输入破折号,2015职称计算机考试Dreamweaver考前测试题及答案
  17. 后台用户角色权限管理设计
  18. 数字电位器IC市场现状研究分析与发展前景预测报告
  19. sd和sem啥区别_标准差和标准误的选择 (SD) 和 (SEM)
  20. 国产BI工具大比拼,帆软Fine BI和观远BI到底该怎么选型?

热门文章

  1. 【双目论文整理 未完】值得一读的双目论文整理
  2. 基于单片机的推箱子游戏设_推箱子游戏51单片机课设计(最全).doc
  3. 【shell】判断字符串值是否相等
  4. 作为老古董的我们还有使用RSSreader阅读器浏览文章,可悲吗?
  5. Java内存结构内存模型
  6. 外网ssh远程登录Ubuntu
  7. 程序设计 -- 节约用电
  8. ipad邮件qq收件服务器,iPad自带邮件功能收发邮件的过程
  9. 2014年11月26日(程序员的加班)
  10. 写一个块设备驱动-第6章