Python全栈学习笔记day 40.5+:线程池和线程池的Python标准模块--concurrent.futures
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相关推荐
- 学神python全栈学习笔记CMDB系统---第一章 python_cmdb_介绍,项目开始
第一章 python_cmdb_介绍,项目开始 本节所讲内容: 1.1 python cmdb系统介绍与需求分析 1.2 python cmdb数据库建模 1.3 python cmdb前端基础 ...
- python全栈学习笔记
先说说那么多编程语言为什么学习python,1,"万能"容易 2,"不容易秃",哈哈哈! 定义变量 python的变量创建赋值三个部分 标识符 赋值符 值 py ...
- python全栈学习笔记(一)网络基础之网络协议篇
阅读目录 一.操作系统基础 二.网络通信原理 2.1 互联网的本质就是一系列的网络协议 2.2 osi七层协议 2.3 tcp/ip五层模型讲解 2.3.1 物理层 2.3.2 数据链路层 2.3.3 ...
- 流弊!《Python全栈学习手册》开放下载了
本次给大家分享一个质量非常高的<Python全栈学习手册>. 这份资料非常全面,从 Python 基础.到 web 开发.数据分析.机器学习.深度学习.金融量化统统 都有,该手册是 HTM ...
- python全栈要学什么_python全栈要学什么 python全栈学习路线
IT行业,技术要比学历.年龄.从业经验更为重要,技术水平直接决定就业薪资,想要学好python,首先要先了解精通Python语言基础.Python web开发.Python爬虫.Python数据分析这 ...
- (零基础)入门python学习四步骤,附上Python全栈学习路线大刚!
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:python学习教程 ( 想要学习Python?Pyt ...
- python全栈学习路线
人工智能时代,想要从事编程行业,最佳的学习语言是什么?当然是Python!Python入门简单.功能强大,已成为各大企业首选开发语言,也吸引了无数有志学子投身学习.下面是小编为您整理的关于python ...
- python 全栈路线_python全栈要学什么 python全栈学习路线
IT行业,技术要比学历.年龄.从业经验更为重要,技术水平直接决定就业薪资,想要学好python,首先要先了解精通Python语言基础.Python web开发.Python爬虫.Python数据分析这 ...
- python线程池模块_python并发编程之进程池,线程池,协程(Python标准模块--concurrent.futures(并发未来))...
需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...
最新文章
- Linux那些事儿 之 戏说USB(13)接口是设备的接口(二)
- 我的一个rsync的包装
- keras,在 fit 和 evaluate 中 都有 verbose 这个参数标记是否打印进度条
- Android如何自定义Gradle插件
- 【MFC】工具栏按钮的热点效果
- 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(二)
- gridview不换行,高亮显示
- Linux学习总结(76)—— Shell 脚本日志技巧
- UVA10474 Where is the Marble?【排序】
- 从华为做手机,到腾讯做游戏,他是怎样无缝切换、且年薪百万的?
- 怎样做一个卓越的程序员
- C++ Tricks(一)—— 判断字符串 string 对象的所有字符都相等
- delphi html 登录,delphi 几个实用的HTML解析函数
- linux 内核模块 定时器,linux内核定时器__backup_timer_hour_struct_定时器_模块__169IT.COM...
- 防止phpddos攻击
- Faster R-CNN算法详细流程
- [A3C]:Tensorflow代码实现详解
- WinRAR制作单文件(便携版)
- python 验证码识别
- geany怎么编写python_Geany怎么使用,Geany安装使用教程