python线程池示例
使用with方式创建线程池,任务执行完毕之后,会自动关闭资源 , 否则就需要手动关闭线程池资源
import threading, time
from concurrent.futures import ThreadPoolExecutor, as_completed class MyTask(threading.Thread):
"""
使用python线程的方法
""" def __init__(self, thread_id):
threading.Thread.__init__(self)
self.thread_id = thread_id def run(self):
while 1:
print('%s线程正在运行。。。。。。。。' % self.thread_id)
time.sleep(1) class MyThreadPool(object):
"""
使用python线程池的两种方式
""" def __init__(self):
"""init方法,构造测试数据"""
self.param_data = []
for i in range(1000):
self.param_data.append(str(i)) def target_task(self, param):
"""目标方法"""
print(threading.currentThread().name) # 打印当前线程的name
# print(param)
return param + '----------task' def execute_thread_pool_method1(self):
"""使用线程池的第一种方式"""
'''创建一个线程池,里面有10个线程'''
with ThreadPoolExecutor(max_workers=10, thread_name_prefix='test') as tpe: # 使用with,会自动关闭任务
result = [] # 缓存线程任务执行结果 for i in self.param_data:
r = tpe.submit(self.target_task, i) # submit提交任务,执行的顺序是乱的
result.append(r) for r in as_completed(result):
print(r.result()) tpe.shutdown() def execute_thread_pool_method2(self):
"""使用线程池的第二种方式"""
'''创建一个线程池,里面有10个线程'''
with ThreadPoolExecutor(10) as tpe:
# 结果的数据类型就是list
result = tpe.map(self.target_task, self.param_data)
for r in result: # 对结果集进行处理
print(r) if __name__ == '__main__':
my_task = MyTask(1) my_task.setDaemon(True) # 将my_task这个线程设置成守护线程
my_task.start()
print(threading.active_count()) # 打印活着的线程数 # my_thread_pool = MyThreadPool()
# my_thread_pool.execute_thread_pool_method1()
# my_thread_pool.execute_thread_pool_method2()
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线程池与进程池
Python线程池与进程池 前言 前面我们已经将线程并发编程与进程并行编程全部摸了个透,其实我第一次学习他们的时候感觉非常困难甚至是吃力.因为概念实在是太多了,各种锁,数据共享同步,各种方法等等让人十 ...
- 一个python线程池的源码解析
python为了方便人们编程高度封装了很多东西,比如进程里的进程池,大大方便了人们编程的效率,但是默认却没有线程池,本人前段时间整理出一个线程池,并进行了简单的解析和注释,本人水平有限,如有错误希望高 ...
- Python之路(第四十六篇)多种方法实现python线程池(threadpool模块\multiprocessing.dummy模块\concurrent.futures模块)
一.线程池 很久(python2.6)之前python没有官方的线程池模块,只有第三方的threadpool模块, 之后再python2.6加入了multiprocessing.dummy 作为可以使 ...
- Python线程池及其原理和使用(超级详细)
系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互.在这种情形下,使用线程池可以很好地提升性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池. 线程池在系统启动时即 ...
随机推荐
- 服务器上安装搭建node环境
一.版本 : node v4.4.3 npm v2.15.1 pm2 v1.1.3 express v4.13.4 二.node安装与环境配置 新建node安装目录,与node项目目录 ...
- QCOW2/RAW/qemu-img 概念浅析
目录 目录 扩展阅读 RAW QCOW2 QEMU-COW 2 QCOW2 Header QCOW2 的 COW 特性 QCOW2 的快照 qemu-img 的基本使用 RAW 与 QCOW2 的区别 ...
- Learn Python the hard way, ex41 来自Percal 25 号星星的哥顿人
我承认,我偷懒了,少打了大量代码(剧情),英文太差,下次可以编个中文的试试 #!/urs/bin/python #coding:utf-8 from sys import exit from rand ...
- 应用安全 - Web安全 - 上传漏洞 - 攻防
客户端绕过 抓包改包(先上传一个gif类型的木马,然后通过burp将其改为asp/php/jsp后缀名即可) 服务端校验 content-type字段校验 文件头检验(常见文件头: () .JPEG; ...
- 如何给vue 日期控件赋值
项目中需要用到日期时间插件,尝试用bootstrap.element的时间插件都各有各的报错,对于一个菜鸟来说真的是很痛苦啊.终于,最后用了layDate实现了需要的功能 最终效果: 使用步骤: 1. ...
- CGI 环境变量
CGI 环境变量 环境变量 意义 SERVER_NAME CGI脚本运行时的主机名和IP地址. SERVER_SOFTWARE 你的服务器的类型如: CERN/3.0 或 NCSA/1.3. GATE ...
- Mac013--Docker安装
一.Docker安装教程 参考:http://www.runoob.com/docker/macos-docker-install.html 可应用brew命令安装,也可自定义下载安装. 应用brew ...
- java8 语言特性
Lamda 表达式 使用内部类也可以实现相关的功能, 但使用lamda更简短 lamda 的参数类型可以省略 如果是单条语句, lamda 的花括号可以省略 如果是单条语句, lamda 的 retu ...
- lambda表达式(2)
转:http://www.cnblogs.com/kingmoon/archive/2011/05/03/2035696.html "Lambda表达式"是一个匿名函数,是一种高效 ...
- CDH平台搭建遇到的问题
安装之前遇到的问题: Note: Forwarding request to 'systemctl disable NetworkManager.service'. Removed symlink ...