Python标准模块--concurrent.futures

源码:https://docs.python.org/dev/library/concurrent.futures.html

#1 介绍:
concurrent.futures模块提供了高度封装的异步调用接口
ThreadPoolExecutor:线程池,提供异步调用
ProcessPoolExecutor: 进程池,提供异步调用
Both implement the same interface, which is defined by the abstract Executor class.两者都实现相同的接口

#2 基本方法:
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)
回调函数

有返回值得栗子:

import time
from concurrent.futures import ThreadPoolExecutor
def func(n):time.sleep(2)print(n)return n*ndef call_back(m):print('结果是 %s'%m.result())   # m拿到的是一个对象tpool = ThreadPoolExecutor(5)   #  默认 不要超过cpu个数*5# tpool.map(func,range(20))  # 拿不到返回值
t_lst = []
for i in  range(20):t = tpool.submit(func,i)t_lst.append(t)
tpool.shutdown()  # close+join
print('主线程')
for t in t_lst:print('***',t.result())

回调函数栗子:

import time
from concurrent.futures import ThreadPoolExecutor
def func(n):time.sleep(2)print(n)return n*ndef call_back(m):print('结果是 %s'%m.result())       m拿到的是一个对象tpool = ThreadPoolExecutor(5)            不要超过cpu个数*5
for i in  range(20):tpool.submit(func,i).add_done_callback(call_back)

ProcessPoolExecutor:栗子

from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutorimport os,time
def task(n):print('%s is runing' %os.getpid())time.sleep(1.5)return n**2if __name__ == '__main__':executor=ProcessPoolExecutor(5)futures=[]for i in range(11):future=executor.submit(task,i)futures.append(future)executor.shutdown(True)print('+++>')for future in futures:print(future.result())

Python全栈学习笔记day 40.5+:线程池和线程池的Python标准模块--concurrent.futures相关推荐

  1. 学神python全栈学习笔记CMDB系统---第一章 python_cmdb_介绍,项目开始

    第一章 python_cmdb_介绍,项目开始 本节所讲内容: 1.1  python cmdb系统介绍与需求分析 1.2  python cmdb数据库建模 1.3  python cmdb前端基础 ...

  2. python全栈学习笔记

    先说说那么多编程语言为什么学习python,1,"万能"容易 2,"不容易秃",哈哈哈! 定义变量 python的变量创建赋值三个部分 标识符 赋值符 值 py ...

  3. python全栈学习笔记(一)网络基础之网络协议篇

    阅读目录 一.操作系统基础 二.网络通信原理 2.1 互联网的本质就是一系列的网络协议 2.2 osi七层协议 2.3 tcp/ip五层模型讲解 2.3.1 物理层 2.3.2 数据链路层 2.3.3 ...

  4. 流弊!《Python全栈学习手册》开放下载了

    本次给大家分享一个质量非常高的<Python全栈学习手册>. 这份资料非常全面,从 Python 基础.到 web 开发.数据分析.机器学习.深度学习.金融量化统统 都有,该手册是 HTM ...

  5. python全栈要学什么_python全栈要学什么 python全栈学习路线

    IT行业,技术要比学历.年龄.从业经验更为重要,技术水平直接决定就业薪资,想要学好python,首先要先了解精通Python语言基础.Python web开发.Python爬虫.Python数据分析这 ...

  6. (零基础)入门python学习四步骤,附上Python全栈学习路线大刚!

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:python学习教程 ( 想要学习Python?Pyt ...

  7. python全栈学习路线

    人工智能时代,想要从事编程行业,最佳的学习语言是什么?当然是Python!Python入门简单.功能强大,已成为各大企业首选开发语言,也吸引了无数有志学子投身学习.下面是小编为您整理的关于python ...

  8. python 全栈路线_python全栈要学什么 python全栈学习路线

    IT行业,技术要比学历.年龄.从业经验更为重要,技术水平直接决定就业薪资,想要学好python,首先要先了解精通Python语言基础.Python web开发.Python爬虫.Python数据分析这 ...

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

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

最新文章

  1. Linux那些事儿 之 戏说USB(13)接口是设备的接口(二)
  2. 我的一个rsync的包装
  3. keras,在 fit 和 evaluate 中 都有 verbose 这个参数标记是否打印进度条
  4. Android如何自定义Gradle插件
  5. 【MFC】工具栏按钮的热点效果
  6. 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(二)
  7. gridview不换行,高亮显示
  8. Linux学习总结(76)—— Shell 脚本日志技巧
  9. UVA10474 Where is the Marble?【排序】
  10. 从华为做手机,到腾讯做游戏,他是怎样无缝切换、且年薪百万的?
  11. 怎样做一个卓越的程序员
  12. C++ Tricks(一)—— 判断字符串 string 对象的所有字符都相等
  13. delphi html 登录,delphi 几个实用的HTML解析函数
  14. linux 内核模块 定时器,linux内核定时器__backup_timer_hour_struct_定时器_模块__169IT.COM...
  15. 防止phpddos攻击
  16. Faster R-CNN算法详细流程
  17. [A3C]:Tensorflow代码实现详解
  18. WinRAR制作单文件(便携版)
  19. python 验证码识别
  20. geany怎么编写python_Geany怎么使用,Geany安装使用教程

热门文章

  1. 【深度学习】2-模型在测试集的准确率大于训练集
  2. 【模糊综合评价的运用】——《电子舌技术在食用盐模糊感官评价中的应用》论文笔记(内附MATLAB程序)
  3. unity urp 实现丝绸渲染
  4. Allegro修改via net
  5. 使用lightGBM进行验证的demo
  6. ADS1.2+2440+j-link(亲测)
  7. 概率分析方法与推断统计(来自我写的python书)
  8. 高效学英语 - 统计英文书词频
  9. matlab牛顿环gif,牛顿环干涉实验的 Matlab模拟
  10. 【AI】PaddlePaddle实现自动语音识别