python 线程池实用总结
线程池的两张方法 submit 和map
from concurrent.futures import ThreadPoolExecutor
import time # def sayhello(a):
time.sleep(2)
return "hello: "+a def main():
seed = ["a","b","c"]
# 不使用线程
start1 = time.time()
for each in seed:
t1 = sayhello(each)
print(t1)
end1 = time.time()
print("time1: "+str(end1-start1))
print('------------------submit----------------------')
# 线程池submit用法
# 1.先把值存放在列表中
# 2.在遍历列表取返回值
# 3.将遍历获取的结果存放在列表中
start2 = time.time()
lst = []
result_lst = []
with ThreadPoolExecutor(3) as executor:
for each in seed:
t2 = executor.submit(sayhello, each)
lst.append(t2)
for i in lst:
print(i.result())
result_lst.append(i.result())
print(result_lst)
end2 = time.time()
print("time2: "+str(end2-start2)) print('---------------map----------------------')
# 线程池map的用法
# map的参数:迭代器
# map的返回值是:生成器
# 1、获取生成器(或直接使用list强制装换)
# 2、遍历取值
# 3、将遍历的结果放入新的列表
map_lst = []
start3 = time.time()
with ThreadPoolExecutor(3) as executor1:
t3 = executor1.map(sayhello, seed)
for t in t3:
map_lst.append(t)
print(map_lst)
end3 = time.time()
print("time3: "+str(end3-start3)) if __name__ == '__main__':
main()
other
from concurrent.futures import ThreadPoolExecutor
import time # def sayhello(a):
time.sleep(2)
foo = [1, a]
return foo def main():
seed = ["a","b","c"]
# 不使用线程
start1 = time.time()
for each in seed:
t1 = sayhello(each)
print(t1)
end1 = time.time()
print("time1: "+str(end1-start1)) print('---------------map----------------------')
# 线程池map的用法
# map 的结果是迭代器,使用for循环取值
map_lst = []
start3 = time.time()
with ThreadPoolExecutor(3) as executor1:
t3 = executor1.map(sayhello, seed)
for t in t3:
map_lst.extend(t)
print(map_lst)
end3 = time.time()
print("time3: "+str(end3-start3)) if __name__ == '__main__':
main()
区别
map:
1、提交的任务的函数是一样的
2、参数:只需要提交一次目标函数,目标函数的参数放在一个迭代器(列表,字典)
submit:
1、提交的任务函数是不一样的,或者执行的过程之可能出现异常(使用map执行过程中发现问题会直接抛出错误)
2、参数:submit每次都需要提交一个目标函数和对应的参数 结果:
map可以保证输出的顺序, submit输出的顺序是乱的
python 线程池实用总结的更多相关文章
- 自定义高级版python线程池
基于简单版创建类对象过多,现自定义高级版python线程池,代码如下 #高级线程池 import queue import threading import time StopEvent = obje ...
- 对Python线程池
本文对Python线程池进行详细说明介绍,IDE选择及编码的解决方案进行了一番详细的描述,实为Python初学者必读的Python学习经验心得. AD: 干货来了,不要等!WOT2015 北京站演讲P ...
- Python 线程池(小节)
Python 线程池(小节) from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor import os,time, ...
- python线程池ThreadPoolExecutor(上)(38)
在前面的文章中我们已经介绍了很多关于python线程相关的知识点,比如 线程互斥锁Lock / 线程事件Event / 线程条件变量Condition 等等,而今天给大家讲解的是 线程池ThreadP ...
- python线程池及其原理和使用
python线程池及其原理和使用 2019-05-29 17:05:20 whatday 阅读数 576 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互.在这种情形下,使用线程池可以很 ...
- python线程池示例
使用with方式创建线程池,任务执行完毕之后,会自动关闭资源 , 否则就需要手动关闭线程池资源 import threading, time from concurrent.futures impo ...
- Python线程池与进程池
Python线程池与进程池 前言 前面我们已经将线程并发编程与进程并行编程全部摸了个透,其实我第一次学习他们的时候感觉非常困难甚至是吃力.因为概念实在是太多了,各种锁,数据共享同步,各种方法等等让人十 ...
- python线程池实现
python 的线程池主要有threadpool,不过它并不是内置的库,每次使用都需要安装,而且使用起来也不是那么好用,所以自己写了一个线程池实现,每次需要使用直接import即可.其中还可以根据传入 ...
- 《转》python线程池
线程池的概念是什么? 在IBM文档库中这样的一段描写:“在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是 如此,虚拟机将试图跟踪每一个对象 ...
随机推荐
- 【js】vue 2.5.1 源码学习 (七) 初始化之 initState 响应式系统基本思路
大体思路(六) 本节内容: 一.生命周期的钩子函数的实现 ==> callHook(vm , 'beforeCreate') beforeCreate 实例创建之后 事件数据还未创建 二.初始化 ...
- H3C 反向查询
- liunx printk 函数消息是如何记录的
printk 函数将消息写入一个 LOG_BUF_LEN 字节长的环形缓存, 长度值从 4 KB 到 1 MB, 由配置内核时选择. 这个函数接着唤醒任何在等待消息的进程, 就是说, 任何在系统 ...
- 【20.95%】【UESTC 94】Bracket Squence
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status T ...
- Qt4与Qt3的主要不同
Qt4与Qt3的主要不同 1)QT4 中提供了大量新控件,虽然它也保持了旧的控件,并命名为Qt3XXX,但是这样的控件没准在今后的哪个QT版本中就不被支持了,所以还是换吧,控件替换的 工作是巨大的,这 ...
- Destoon系统目录树SEO属性目录开发实例
如何在destoon里设置树形目录结构的SEO优化方式官方给的SEO伪静态实例是没有这个方式的 楼主后来想了一下,就干脆自己做一个吧,已经测试完全无误通过,特意分享给大家 目前比如sell模块下类别[ ...
- Servlet request 面试题
使用request获得请求行:String getmethod():获得请求的资源:String getcontextpath():----web应用名称request是一个域对象request完成请 ...
- 使用windows api函数捕获SAP session的左下角消息句柄
背景:SAP session的左下角消息非常有用,我们在做SAP的自动化脚本时可以设法读到这个消息的内容,作为程序后续动作的判断条件.如下图: 比如小爬之前给财务的同事制作了一个批量导出 ...
- 0008 CSS初识(行内式、内部样式表、外部样式表)
typora-copy-images-to: media 第01阶段.前端基础.CSS初识 CSS层叠样式表 学习目标 理解 css的目的作用 css的三种引入方式 应用 css三种引用方式的书写 通 ...
- jquery简单实现复选框的全选与反选
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...