1、

2、 为啥要有 进程池和线程池

进程池来控制进程数目,比如httpd的进程模式,规定最小进程数和最大进程数

3、创建进程池的类pool

如果指定numprocess为3,则进程池会从无到有创建三个进程,然后自始至终使用这三个进程去执行所有任务,不会开启其他进程

pool([numprocess [,initializer [, initargs]]]):创建进程池

参数介绍:

numprocess:要创建的进程数,如果省略,将默认使用cpu_count()的值

initializer:是每个工作进程启动时要执行的可调用对象,默认为none

initargs:是要传给initializer的参数组

方法介绍:

主要方法:

p.apply(func [, args [, kwargs]])

在一个池工作进程中执行func(*args,**kwargs),然后返回结果。

需要强调的是:此操作并不会在所有池工作进程中并执行func函数。如果要通过不同参数并发地执行func函数,必须从不同线程调用p.apply()函数或者使用p.apply_async()

p.apply_async(func [, args [, kwargs]])

在一个池工作进程中执行func(*args,**kwargs),然后返回结果。此方法的结果是asyncresult类的实例,callback是可调用对象,接收输入参数。

当func的结果变为可用时,将理解传递给callback。callback禁止执行任何阻塞操作,否则将接收其他异步操作中的结果。

p.close()

关闭进程池,防止进一步操作。如果所有操作持续挂起,它们将在工作进程终止前完成

p.jion()

等待所有工作进程退出。此方法只能在close()或 teminate()之后调用

4、进程池和线程池

from concurrent.futures import threadpoolexecutor, processpoolexecutor

import time

import os

# pool = threadpoolexecutor(5) # 池子里面固定只有五个线程

# 括号内可以传数字 不传的话默认会开设当前计算机cpu个数五倍的线程

pool = processpoolexecutor(5)

# 括号内可以传数字 不传的话默认会开设当前计算机cpu个数进程

"""

池子造出来之后 里面会固定存在五个线程

这个五个线程不会出现重复创建和销毁的过程

池子造出来之后 里面会固定的几个进程

这个几个进程不会出现重复创建和销毁的过程

池子的使用非常的简单

你只需要将需要做的任务往池子中提交即可 自动会有人来服务你

"""

def task(n):

print(n,os.getpid())

time.sleep(2)

return n**n

def call_back(n):

print('call_back>>>:',n.result())

"""

任务的提交方式

同步:提交任务之后原地等待任务的返回结果 期间不做任何事

异步:提交任务之后不等待任务的返回结果 执行继续往下执行

返回结果如何获取???

异步提交任务的返回结果 应该通过回调机制来获取

回调机制

就相当于给每个异步任务绑定了一个定时炸弹

一旦该任务有结果立刻触发爆炸

"""

if __name__ == '__main__':

# pool.submit(task, 1) # 朝池子中提交任务 异步提交

# print('主')

t_list = []

for i in range(20): # 朝池子中提交20个任务

# res = pool.submit(task, i) #

res = pool.submit(task, i).add_done_callback(call_back)

# print(res.result()) # result方法 同步提交

# t_list.append(res)

# 等待线程池中所有的任务执行完毕之后再继续往下执行

# pool.shutdown() # 关闭线程池 等待线程池中所有的任务运行完毕

# for t in t_list:

# print('>>>:',t.result()) # 肯定是有序的

"""

程序有并发变成了串行

任务的为什么打印的是none

res.result() 拿到的就是异步提交的任务的返回结果

"""

参考资料:

希望与广大网友互动??

点此进行留言吧!

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

  1. Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

    为什么80%的码农都做不了架构师?>>>    这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情.并发课题对于Java来说是一个又重要又难的一大块 ...

  2. java 线程工厂_Java并发编程:Java的四种线程池的使用,以及自定义线程工厂

    引言 通过前面的文章,我们学习了Executor框架中的核心类ThreadPoolExecutor ,对于线程池的核心调度机制有了一定的了解,并且成功使用ThreadPoolExecutor 创建了线 ...

  3. python并发编程之semaphore(信号量)_python 之 并发编程(守护进程、互斥锁、IPC通信机制)...

    9.5 守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就立即终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic process ...

  4. hibernate 并发获取session失败 空指针_高并发之|通过ThreadPoolExecutor类的源码深度解析线程池执行任务的核心流程...

    核心逻辑概述 ThreadPoolExecutor是Java线程池中最核心的类之一,它能够保证线程池按照正常的业务逻辑执行任务,并通过原子方式更新线程池每个阶段的状态. ThreadPoolExecu ...

  5. 使用双标记写html代码时如何进行嵌套,【2020Python修炼记】前端开发之 前端基础和HTML入门...

    发表于:2020-11-12 18:21 阅读: 119次 这篇教程主要讲解了[2020Python修炼记]前端开发之 前端基础和HTML入门,并附有相关的代码样列,我觉得非常有帮助,现在分享出来大家 ...

  6. 理解Python并发编程一篇就够了 - 线程篇

    目录 前言 GIL 同步机制 1. Semaphore(信号量) 2. Lock(锁) 3. RLock(可重入锁) 4. Condition(条件) 5. Event 6. Queue 线程池 前言 ...

  7. Python3 与 C# 并发编程之~进程先导篇

    在线预览:http://github.lesschina.com/python/base/concurrency/1.并发编程-进程先导篇.html Python3 与 C# 并发编程之- 进程篇:h ...

  8. python 进程池 等待数量_python 进程池multiprocessing.Pool

    44.Python 进程池multiprocessing.Pool 最后更新于:2020-03-21 11:53:37 python进程池Pool 和前面讲解的python线程池 类似,虽然使用多进程 ...

  9. python线程池并发_python 并发编程多线程之进程池/线程池

    一.验证GIL锁的存在 Python在设计之初就考虑到要在主循环中,同时只有一个线程在执行.虽然 Python 解释器中可以"运行"多个线程,但在任意时刻只有一个线程在解释器中运行 ...

最新文章

  1. linux7设置时间,CentOS 7 设置日期和时间
  2. Detail-Preserving Pooling in Deep Networks
  3. php post可重复提交了,如何防止 POST 数据重复提交!
  4. Discuz!UCenter创始人密码重置方法
  5. mysql之外键约束
  6. 又到半年总结时,IT人只想躺平!
  7. WPF Tile=” 变量 UI 双向绑定”x:Class=Problem/
  8. 东方通 no suitable default request_【官】海宁鸿翔东方郡璀璨来袭,不容错过!【营销官网】...
  9. Linux安装/升级/卸载pip3
  10. 【定位】纯激光导航定位丢失/漂移问题的优化方案及思考
  11. 如何快速判断奇数和偶数
  12. 快速搭建接口自动化平台
  13. 万顿思电商:拼多多推广是如何收费的?
  14. 都写了100+原创了,是该分类整理一下
  15. 洛谷P2006 赵神牛的游戏
  16. dos2unix和unix2dos命令
  17. 41. Vue组件传值-父组件向子组件传值
  18. 程序员年薪30万到100万,汇报有啥差别?
  19. 打印Diamond钻石图案
  20. vscode项目配置服务器,vs code配置服务器

热门文章

  1. 【渝粤题库】陕西师范大学201371 国际法学作业
  2. 【渝粤教育】广东开放大学 文学创意写作 形成性考核 (58)
  3. 【渝粤题库】广东开放大学 人力资源本 形成性考核
  4. nginx php 不能连接mysql_nginx配置php环境,并测试PHP是否可以连接mysql
  5. input不可编辑属性_谁不喜欢图文并茂呢:基于多模态信息的属性抽取
  6. 信号扫描_科研必备“武器”之扫描电子显微镜
  7. 全境封锁服务器维护 2018,全境封锁全域事件2018年8月活动什么时候开始_全域事件怎么玩...
  8. 酒店wifi代理服务器没有响应,wn10连接酒店wifi的登录界面无法弹出如何处理
  9. 真实收货地址大全2016_中国古典诗词大全汇集了诗经、唐诗、宋词、元曲以及纳兰词,12册精美套装。...
  10. 在PhotoShop中改像素m*n