(11)线程池(最新的concurrent.futures包去开启)
'''concurrent.futures是最新的开启线程池的包'''
import time
from concurrent.futures import ThreadPoolExecutor #开启线程池导入的模块 def task(i):
print(i)
time.sleep(1)
return i if __name__ == '__main__':
'''线程池的个数是cpu数 * 5,不传参默认就是cpu数 * 5'''
t = ThreadPoolExecutor(20) #在池里开了20个线程
res_l = []
for i in range(30):
'''线程池可以读取返回值的结果,但是需要将返回值放入变量并且存入列表用for循环读取'''
res = t.submit(task,i) # 就是等于start的功能
res_l.append(res) # 将返回值放入列表
t.shutdown() #合并了进程池中close和join的工作,停止提交任务并等待子线程执行完毕
for res in res_l:
print(res.result()) #要读取返回值就要用result方法
'''concurrent.futures是最新的开启线程池的包'''
import time
from concurrent.futures import ProcessPoolExecutor #开启进程池 def task(i):
# print(i)
time.sleep(1)
return i if __name__ == '__main__':
t = ProcessPoolExecutor(5) #在池里开了5个进程
res_l = []
for i in range(30):
'''进程池可以读取返回值的结果,但是需要将返回值放入变量并且存入列表用for循环读取'''
res = t.submit(task,i) # 就是等于start的功能
res_l.append(res) # 将返回值放入列表
t.shutdown() #合并了进程池中close和join的工作,停止提交任务并等待子线程执行完毕
for res in res_l:
print(res.result()) #要读取返回值就要用result方法
(11)线程池(最新的concurrent.futures包去开启)的更多相关文章
- 托管C++线程锁实现 c++11线程池
托管C++线程锁实现 最近由于工作需要,开始写托管C++,由于C++11中的mutex,和future等类,托管C++不让调用(报错),所以自己实现了托管C++的线程锁. 该类可确保当一个线程位于 ...
- 简单的C++11线程池实现
线程池的C++11简单实现,源代码来自Github上作者progschj,地址为:A simple C++11 Thread Pool implementation,具体博客可以参见Jakob's D ...
- 《java.util.concurrent 包源码阅读》11 线程池系列之ThreadPoolExecutor 第一部分
先来看ThreadPoolExecutor的execute方法,这个方法能体现出一个Task被加入到线程池之后都发生了什么: public void execute(Runnable command) ...
- 用java自制简易线程池(不依赖concurrent包)
很久之前人们为了继续享用并行化带来的好处而不想使用进程,于是创造出了比进程更轻量级的线程.以linux为例,创建一个进程需要申请新的自己的内存空间,从父进程拷贝一些数据,所以开销是比较大的,线程(或称 ...
- python concurrent.futures包使用,捕获异常
concurrent.futures的ThreadPoolExecutor类暴露的api很好用,threading模块抹油提供官方的线程池.和另外一个第三方threadpool包相比,这个可以非阻塞的 ...
- c++11 线程池学习笔记 (一) 任务队列
学习内容来自一下地址 http://www.cnblogs.com/qicosmos/p/4772486.html github https://github.com/qicosmos/cosmos ...
- C++11线程池的实现
什么是线程池 处理大量并发任务,一个请求一个线程来处理请求任务,大量的线程创建和销毁将过多的消耗系统资源,还增加了线程上下文切换开销. 线程池通过在系统中预先创建一定数量的线程,当任务请求到来时从线程 ...
- c++11线程池实现
咳咳.c++11 增加了线程库,从此告别了标准库不支持并发的历史. 然而 c++ 对于多线程的支持还是比較低级,略微高级一点的使用方法都须要自己去实现,譬如线程池.信号量等. 线程池(thread p ...
- c++ 11 线程池---完全使用c++ 11新特性
前言: 目前网上的c++线程池资源多是使用老版本或者使用系统接口实现,使用c++ 11新特性的不多,最近研究了一下,实现一个简单版本,可实现任意任意参数函数的调用以及获得返回值. 0 前置知识 首先介 ...
随机推荐
- 输出前n大的数(分治)
描述:给定一个数组包含n个元素,统计前m大的数并且把这m个数从大到小输 出. 输入: 第一行包含一个整数n,表示数组的大小.n < 100000.第二行包含n个整数,表示数组的元素,整数之间以一 ...
- linux内核initcall
include/linux/init.h #define pure_initcall(fn) __define_initcall(fn, 0) #define core_initcall(fn) __ ...
- window有哪些属性?
self:self代表自己,相当于window. parent:返回父窗口. top:返回顶层窗口,和parent作用一样. opener:窗口开启者. status:设置窗口状态栏的文本.
- Unity中UGUI之Canvas属性解读版本二
Canvas Render Modes(渲染模式) 1.在screen空间中渲染2.在world空间中渲染 Screen Space-Overlay 在这个渲染模式中,UI元素将在场景的上面.如果场景 ...
- bzoj1238
题解: 傻逼模拟题 果断的复制了题解(还没有c++题解?) 代码: program p2509; type arr=array[..] of boolean; var tot:longint; s:a ...
- Arduino显示PM2.5
这代码一般都是复制过来,在小改下就行了 代码如下: #include <Wire.h> #include <LiquidCrystal_I2C.h> #include < ...
- 相册 垂直居中; 水平居中. 1)宽度 大于高度, 宽度 100%; 2) 高度 大于 宽度 , 高度100%; getimagesize , list --->line-height , text-align, vertical-align, max-height, max-width
一: 效果: 1) 黑色 部分是 相框. 2) 图片 要实现 水平居中, 垂直居中 3) 如果 宽度 大于 高度 ,那么 宽度 100% ,如图1 , 高度 自适应 ,同时不能超过黑色相框的 高度 ; ...
- C++连接mysql数据库的两种方法
本文主要介绍了C++连接mysql数据库的两种方法,希望通过本文,能对你有所帮助,一起来看. 现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用a ...
- Allocation-Free Collections
假设你有一个方法,通过创建临时的List来收集某些数据,并根据这些数据来统计信息,然后销毁这个临时列表.这个方法被经常调用,导致大量内存分配和释放以及增加的内存碎片.此外,所有这些内存管理都需要时间, ...
- Charles安装及配置
安装包及jar包下载地址: 1.下载Charles Proxy v4.2.dmg镜像文件,双击打开,将Charles拖拽到Applications中,Mac中打开一次Charles后关掉. 2.将下载 ...