Python中的进程池
一丧“为了情人节和你出去,我有了好几十万自行车的使用权”
我们先来说我们为什么使用这个进程池。
目的:可以节约大量的时间。
既然这么重要,那我们都应该使用什么方法去调用方法呢?
我们来看一下
Pool方法
pool是什么?pool就是我们的进程池了,让我们来看一下怎么用这个方法
import multiprocessing#导入进程包
import os,time#这两个包的作用皆为更好的体现出我们的进程
def copy(index):print("当前进程编号",os.getpid())print(index)time.sleep(1)#打一个时间差,更容易看出其效果
if __name__ == '__main__':pool = multiprocessing.Pool(3)#导入进程池,括号内为最大进程数for i in range(10):pool.apply_async(copy,(i,))pool.close()pool.join()
Pool的括号内为进程池的容量,就是子进程的最大开启数量。
我们来看一下输出吧
怎么样,是不是一目了然,我的池容量为3,所以进程就是三个为一组的运行
不过笔者认为进程池中比较难懂的地方在于apply_async,所以我们就来好好地探讨一下
apply_async
先看官方是怎么描述的。
我们可以看到,官方定义为这是一个异步非阻塞式的方法。
在笔者的理解就是简单的将函数放入进程池。
那么它与阻塞式的差别在哪里呢?
apply(阻塞式):首先主进程开始运行,碰到子进程,操作系统切换到子进程,等待子进程运行结束后,在切换到另外一个子进程,直到所有子进程运行完毕。然后在切换到主进程,运行剩余的部分。
apply_async(异步非阻塞式):首先主进程开始运行,碰到子进程后,主进程说:让我先运行个够,等到操作系统进行进程切换的时候,在交给子进程运行。
因为我们的主进程过短,所以,我们子进程还没有完成程序就因主程序结束而结束,所以我们要使用join,提醒主进程在子进程结束后结束。
因为异步非阻塞是主进程和进程池中的子进程同时运行,所以耗时较短
而apply_async的()中都写什么呢?在上图您应该注意到了:
“func” = 函数名
“args = ()” = 数组
“kwds = {}” = 字典
“callback = None” = 返回值
“error_callback = None” = 返回错误信息
Python中的进程池相关推荐
- python中的进程池:multiprocessing.Pool()
python中的进程池: 我们可以写出自己希望进程帮助我们完成的任务,然后把任务批量交给进程池 进程池帮助我们创建进程完成任务,不需要我们管理. 进程池:利用multiprocessing 下的Poo ...
- python中的进程池Pool
初始化Pool时,可以指定⼀个最大进程池,当有新进程提交时,如果池还没有满,那么就会创建新进程请求:但如果池中达到最大值,那么就会等待,待池中有进程结束,新进程来执行. 非阻塞式:apply_asyn ...
- python笔记 7-8 进程池 进程通信 迭代器 消息队列 Queue 协程 和正则表达式
day7 进程 进程池 进程通信 迭代器 消息队列 Queue 作用 用于多个进程间的通信 操作put放入消息(值) put_nowait() 放入值,不等待 如果队满,则报错 get获取消息(值) ...
- python停止线程池_详解python中Threadpool线程池任务终止示例代码
需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...
- 深入理解Python中的进程
博客核心内容: 进程的概念 并行与并发的区别 同步与异步的概念 进程创建的方式 父进程和子进程的关系 线程的相关概念 Python中进程池的相关概念 Python的的回调函数 进程池+回调函数的实际应 ...
- Python 多进程的进程池pool运行时报错:ValueError: Pool not running
本文仅供学习交流使用,如侵立删!demo下载见文末 Python 多进程的进程池pool运行时报错:ValueError: Pool not running def main(self, num):& ...
- python进程池和线程池_Python中的进程池与线程池(包含代码)
引入进程池与线程池 使用ProcessPoolExecutor进程池,使用ThreadPoolExecutor 使用shutdown 使用submit同步调用 使用submit异步调用 异步+回调函数 ...
- Python 中的进程、线程、协程、同步、异步、回调(一)
在进一步之前,让我们先回顾一下各种上下文切换技术. 不过首先说明一点术语.当我们说"上下文"的时候,指的是程序在执行中的一个状态.通常我们会用调用栈来表示这个状态--栈记载了每个调 ...
- python进阶之进程池multiprocessing.Pool
python的进程池multiprocessing.Pool有八个重要函数: apply.apply_async.map.map_async.imap.imap_unordered.starmap.s ...
最新文章
- 学习oop知识之OOP的封装
- sum服务器如何接显示器,sum服务器监控
- plsql一直正在编译_使用plsql/devlop编译过程hang住案列小结
- Dapr微服务应用开发系列4:状态管理构件块
- 深入理解Solidity
- 安卓牛客专项练习2020.12.31
- 简化java_JAVA之旅-简化java开发
- 用计算机弹奏曲子童年,5.这首曲子使我想起了我的童年.十.书面表达现在.计算机游戏非常盛行.这是一件好事还是一件坏事?请你用英语写一篇短文来陈述自己的观点.并说明理由.字数:80-120....
- 特征工程之特征预处理
- 快点来白嫖!黑马培训java多长时间
- 大php,厉嗨了我大PHP
- DirectX版本问题
- 百度干净云2.0无限速加速破解版(附怎么用教程)
- 基于DWM1000的stm32f103c8测距调试(一)
- excel打印二维码
- 卷积编码verilog实现
- Android 开发横屏App或创建横屏布局
- 简述具有五层协议的网络体系结构各层的主要功能。
- 城市按首字母分类,各城市对应的县和区
- 量子十问之二:“爱因斯坦幽灵”能用来实现超光速通信吗?
热门文章
- 简单服务发现协议SSDP【转】
- SystemUI修改
- gensim Dictionary 去除某个词 gensim.corpora.dictionary.Dictionary
- win10 取消任务栏图标合并
- 将页面中的指定 div 下载为图片
- 北京-绕五环骑行(完美环绕)2017-03-11
- allegro PCB 检查报告中的Report DangLine以及禁用Antenna vias
- iOS 加载GIF图片
- hp服务器系统安装xp糸统,惠普笔记本怎么安装XPghost版系统教程
- 敏捷ACP 常用关键词整理 敏捷ACP 常用知识点整理