并发编程——进程池与线程池
一、简单介绍
在学习了多进程或多线程之后,我们可能会迫不及待地基于多进程或多线程做一些开发,然而毫无节制的开启进程或线程是十分危险的。
服务开启的进程数或线程数都会随着并发的客户端数目地增多而增多,这会对服务端主机带来巨大的压力,甚至于不堪重负而瘫痪。
所以我们必须对服务端开启的进程数或线程数加以控制,让机器在一个自己可以承受的范围内运行,这就是进程池或线程池的用途,例如进程池,就是用来存放进程的池子,本质还是基于多进程,只不过是对开启进程的数目加上了限制。
concurrent.futures模块提供了高度封装的异步调用接口
ThreadPoolExecutor:线程池,提供异步调用
ProcessPoolExecutor: 进程池,提供异步调用
Both implement the same interface, which is defined by the abstract Executor class.
两者都实现相同的接口,该接口由抽象执行器类定义。
基本方法
1、submit(fn, *args, **kwargs)
异步提交任务2、map(func, *iterables, timeout=None, chunksize=1)
取代for循环submit的操作3、shutdown(wait=True)
相当于进程池的pool.close()+pool.join()操作
wait=True,等待池内所有任务执行完毕回收完资源后才继续
wait=False,立即返回,并不会等待池内的任务执行完毕
但不管wait参数为何值,整个程序都会等到所有任务执行完毕
submit和map必须在shutdown之前4、result(time
并发编程——进程池与线程池相关推荐
- [Java并发编程(二)] 线程池 FixedThreadPool、CachedThreadPool、ForkJoinPool?为后台任务选择合适的 Java executors...
[Java并发编程(二)] 线程池 FixedThreadPool.CachedThreadPool.ForkJoinPool?为后台任务选择合适的 Java executors ... 摘要 Jav ...
- [Java并发编程(一)] 线程池 FixedThreadPool vs CachedThreadPool ...
[Java并发编程(一)] 线程池 FixedThreadPool vs CachedThreadPool ... 摘要 介绍 Java 并发包里的几个主要 ExecutorService . 正文 ...
- Java 并发编程——Executor框架和线程池原理
Java 并发编程系列文章 Java 并发基础--线程安全性 Java 并发编程--Callable+Future+FutureTask java 并发编程--Thread 源码重新学习 java并发 ...
- 高并发编程-自定义简易的线程池(2),体会原理
文章目录 概述 示例 概述 高并发编程-自定义简易的线程池(1),体会原理 中只实现了任务队列,我们这里把其余的几个也补充进来 拒绝策略 关闭线程池 最小 最大 活动线程数 - 示例 比较简单,直接上 ...
- java 线程钩子_高级并发编程系列六(线程池钩子函数)
1.考考你 国庆假期快要结束了,准备回到工作岗位的你,是不是已经开始撸起袖子敲代码,反正发完文章我就要准备去加班了,程序员就这样,有干劲对吧 那么来吧,让我们一起分享完高级并发编程系列中,线程池小节的 ...
- winform判断线程有没有完成_并发编程系列1:线程池的架构实现、大小配置、及四种线程池使用...
△ 公众号回复关键词"架构" 即可领取<1500+BAT架构及面试专题合集> 本篇为线程池系列文章之一,不经常使用线程池的童鞋,还有对几种线程的使用不甚了解的童鞋,可以 ...
- Java并发编程:4种线程池和缓冲队列BlockingQueue
一. 线程池简介 1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池.使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动 ...
- 项目使用线程池_并发编程系列1:线程池的架构实现、大小配置、及四种线程池使用...
△ 公众号回复关键词"架构" 即可领取<1500+BAT架构及面试专题合集> 本篇为线程池系列文章之一,不经常使用线程池的童鞋,还有对几种线程的使用不甚了解的童鞋,可以 ...
- Java高并发编程详解系列-线程池原理自定义线程池
之前博客的所有内容是对单个线程的操作,例如有Thread和Runnable的使用以及ThreadGroup等的使用,但是对于在有些场景下我们需要管理很多的线程,而对于这些线程的管理有一个统一的管理工具 ...
- 高并发编程-自定义简易的线程池(1),体会原理
文章目录 概述 示例 概述 我们工作中,并发编程必然离不开jdk提供的j.u.c中的线程池 ,假设让我们自己去设计一个线程池,该从哪几个方面来着手考虑呢? 首先: 既然是线程池 , 那必然 有个初始化 ...
最新文章
- 《ADO.NET 2.0高级程序设计》读书随笔(1)使用连接池connection pool
- 比世界纪录快3倍 阿里云377秒完成100TB数据排序
- 小程序向Java传值,微信小程序 页面传值详解
- 计算商品价格找零(Python)
- powerdesigner显示工具面板_10分钟看懂Photoshop 绘画(画笔面板1-3)
- native的Socket向Android的LocalSocketServer发送汉字乱码的问题
- HashMap中数组初始化的秘密
- 底层软件工程师的一次冒险经历
- ENVI学习总结(七)——图像融合
- Python django model 插入新增一条数据,得到create返回主键值 id
- 第十一讲 在ASP.NET中使用用户控件
- SPOJ 1811 Longest Common Substring
- linux合并pdf命令,LINUX下合并PDF
- 单循环比赛赛程 java
- 安装小企鹅游戏(企5)
- informix操作
- 揭秘美国“大数据”的老巢
- 咖啡壶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 【调剂】云南大学2021年硕士研究生招生调剂工作的说明
- 遗传算法求一元函数的最大值(python)
热门文章
- bzoj1079: [SCOI2008]着色方案
- 今天想到了关于 Django 中 view 的组织方式问题
- linux 杀死t状态进程,Linux查杀stopped进程
- 上下定高 中间自适应_ADAS|驾驶辅助系统之自适应灯光照明系统
- 每日程序C语言6-判断某范围之间的素数
- 算法设计棋盘覆盖问题c语言,棋盘覆盖问题(用分治法求解)
- C语言学习之用指针变量,将数组a中n个整数按相反顺序存放
- 程序员面试100题之七:最长公共子字符串
- nginx 全局配置
- 11月深度学习班第5课图像物体检测:rcnn/fast-rcnn/faster-rcnn