一丧“为了情人节和你出去,我有了好几十万自行车的使用权”

我们先来说我们为什么使用这个进程池。
目的:可以节约大量的时间。
既然这么重要,那我们都应该使用什么方法去调用方法呢?
我们来看一下

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中的进程池相关推荐

  1. python中的进程池:multiprocessing.Pool()

    python中的进程池: 我们可以写出自己希望进程帮助我们完成的任务,然后把任务批量交给进程池 进程池帮助我们创建进程完成任务,不需要我们管理. 进程池:利用multiprocessing 下的Poo ...

  2. python中的进程池Pool

    初始化Pool时,可以指定⼀个最大进程池,当有新进程提交时,如果池还没有满,那么就会创建新进程请求:但如果池中达到最大值,那么就会等待,待池中有进程结束,新进程来执行. 非阻塞式:apply_asyn ...

  3. python笔记 7-8 进程池 进程通信 迭代器 消息队列 Queue 协程 和正则表达式

    day7 进程 进程池 进程通信 迭代器 消息队列 Queue 作用 用于多个进程间的通信 操作put放入消息(值) put_nowait() 放入值,不等待 如果队满,则报错 get获取消息(值) ...

  4. python停止线程池_详解python中Threadpool线程池任务终止示例代码

    需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...

  5. 深入理解Python中的进程

    博客核心内容: 进程的概念 并行与并发的区别 同步与异步的概念 进程创建的方式 父进程和子进程的关系 线程的相关概念 Python中进程池的相关概念 Python的的回调函数 进程池+回调函数的实际应 ...

  6. Python 多进程的进程池pool运行时报错:ValueError: Pool not running

    本文仅供学习交流使用,如侵立删!demo下载见文末 Python 多进程的进程池pool运行时报错:ValueError: Pool not running def main(self, num):& ...

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

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

  8. Python 中的进程、线程、协程、同步、异步、回调(一)

    在进一步之前,让我们先回顾一下各种上下文切换技术. 不过首先说明一点术语.当我们说"上下文"的时候,指的是程序在执行中的一个状态.通常我们会用调用栈来表示这个状态--栈记载了每个调 ...

  9. python进阶之进程池multiprocessing.Pool

    python的进程池multiprocessing.Pool有八个重要函数: apply.apply_async.map.map_async.imap.imap_unordered.starmap.s ...

最新文章

  1. 学习oop知识之OOP的封装
  2. sum服务器如何接显示器,sum服务器监控
  3. plsql一直正在编译_使用plsql/devlop编译过程hang住案列小结
  4. Dapr微服务应用开发系列4:状态管理构件块
  5. 深入理解Solidity
  6. 安卓牛客专项练习2020.12.31
  7. 简化java_JAVA之旅-简化java开发
  8. 用计算机弹奏曲子童年,5.这首曲子使我想起了我的童年.十.书面表达现在.计算机游戏非常盛行.这是一件好事还是一件坏事?请你用英语写一篇短文来陈述自己的观点.并说明理由.字数:80-120....
  9. 特征工程之特征预处理
  10. 快点来白嫖!黑马培训java多长时间
  11. 大php,厉嗨了我大PHP
  12. DirectX版本问题
  13. 百度干净云2.0无限速加速破解版(附怎么用教程)
  14. 基于DWM1000的stm32f103c8测距调试(一)
  15. excel打印二维码
  16. 卷积编码verilog实现
  17. Android 开发横屏App或创建横屏布局
  18. 简述具有五层协议的网络体系结构各层的主要功能。
  19. 城市按首字母分类,各城市对应的县和区
  20. 量子十问之二:“爱因斯坦幽灵”能用来实现超光速通信吗?

热门文章

  1. 简单服务发现协议SSDP【转】
  2. SystemUI修改
  3. gensim Dictionary 去除某个词 gensim.corpora.dictionary.Dictionary
  4. win10 取消任务栏图标合并
  5. 将页面中的指定 div 下载为图片
  6. 北京-绕五环骑行(完美环绕)2017-03-11
  7. allegro PCB 检查报告中的Report DangLine以及禁用Antenna vias
  8. iOS 加载GIF图片
  9. hp服务器系统安装xp糸统,惠普笔记本怎么安装XPghost版系统教程
  10. 敏捷ACP 常用关键词整理 敏捷ACP 常用知识点整理