(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 前置知识 首先介 ...
随机推荐
- VS中常用快捷键
常用的快捷键 这里仅列出一些个人觉得好用的快捷键: 调用智能提示:使用组合键“Ctrl+J” 注释/取消注释: 注释用组合键“Ctrl+K+C” 取消注释用组合键“Ctrl+K+U” 大小写转 ...
- lubuntu16.04 安装过程以及ssd测试模型的环境配置
1.系统启动盘(ultraISO)制作启动盘, 1/5 文件->打开,打开我们的iso镜像 2/5 选择我们的u盘, 3/5 点击启动->写入硬盘映像 4/5 写入方式选择raw,格式化然 ...
- 红黑树与AVL
红黑树和avl树都属于自平衡二叉树: 两者查找.插入.删除的时间复杂度相同: 包含n个内部结点的红黑树的高度是o(logn); TreeMap是一个红黑树的实现,能保证插入的值保证排序 ...
- Python Django 之 登录页面
一.创建project与app 1.创建project与app django-admin startproject mysite_login python manage.py startapp log ...
- sea.js与require.js的区别
随着ES6标准的module出台渐渐会退出历史舞台 首先原理上的区别 sea.js遵循CMD规范.书写方式类似node.js的书写模板代码.依赖的自动加载,配置的简洁清晰.说白了就是懒加载. requ ...
- requests(第三方模块) 请求、登录、下载网页
import requests #http://docs.python-requests.org/en/latest/api/ 说明文档 ''' requests.request(method,ur ...
- JavaScript示例
<!DOCTYPE html> <html> <head> <title>单击按钮事件示例</title> <script langu ...
- STM32之RTC配置与初始化
void rtc_init() { //让电源和后备寄存器使能 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE) ...
- CodeForces - 779D
Little Nastya has a hobby, she likes to remove some letters from word, to obtain another word. But i ...
- Kubernetes资源监控探索
搭建kubernetes集群,有一个默认的dashboard,但是这个dashboard比较简陋,不能将自定义展示.所以打算使用Grafana+Heapster+Influxdb构建一个一体化监控平台 ...