(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 前置知识 首先介 ...
随机推荐
- 【Java算法】获得一个随机字符串
package suanfa; import java.util.Random; public class RandomStr { public static String getRandomStr( ...
- laravel在控制器中动态创建数据表
Schema::connection('usertable')->create('test', function ($table) { $table->increments('id'); ...
- DBProxy 项目全解
转载自:https://github.com/Meituan-Dianping/DBProxy/blob/master/doc/USER_GUIDE.md#2 1 总体信息 1.1 关于 ...
- linux程序的常用保护机制
操作系统提供了许多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险,包括DEP.ASLR等.在编写漏洞利用代码的时候,需要特别注意目标进程是否开启了DEP(Linux下对应NX).ASLR(Lin ...
- Android UIAutomator 定位
AndroidUIAutomator:Android的源生测试框架的定位方式,定位速度快 一.组合定位 1.一般组合用id,class,text这三个属性会比较好一点,但也可以组合定位 2.id与te ...
- Delphi和OutputDebugString
曾经想要实时监控您的Delphi应用程序,并能够查看日志消息吗?当然,您始终可以在RAD Studio IDE中以完全调试模式运行.另一种方法是输出日志消息,例如输出到文本文件.您还可以使用Outpu ...
- scrapy中自动补全url
url = "https:" + url 或者url = response.urljoin(url) #这里代表的是自动补全url
- java学习笔记20(Arraylist复习,Collection接口方法,迭代器,增强型for循环)
集合:集合是Java提供的一种容器,可以用来存储多个数据: 集合与数组的区别:集合的长度是可变的,数组的长度是固定的 集合中存储的数据必须是引用类型数据: ArrayList回顾: public cl ...
- 使用python绘出常见函数
'''''' ''' mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False用来 ...
- swift3.0 自定义键盘
...绕了一大圈,又绕回原生来了,今天,学习一下swift3.0语法下的自定义键盘.效果图如下: 其实,很简单,只需要把UITextView(或者UITextField)的inputView属性设置为 ...