python 线程池实现
来源:互联网 发布:linux vim补全插件 编辑:程序博客网 时间:2024/06/06 08:23
python 线程池实现
线程池的目的是减少线程的建立与销毁的时间开销, 使得 100 个任务不需要 100 个线程, 而是用 5 个线程(苦工)来完成. 哪个苦工工作的卖力(快), 就自动多分配任务给它.
# -*- encoding: utf-8 -*-__author__ = 'Mohanson'from queue import Queue, Emptyimport threadingimport tracebackimport sysclass WorkPool(object): def __init__(self, maxsize=100, thread_num=5): self.work_queue = Queue(maxsize=maxsize) self.thread_num = thread_num self.threads = [] for i in range(self.thread_num): self.threads.append(WorkThread(self.work_queue)) def addwork(self, func, *args, **kwargs): self.work_queue.put((func, args, kwargs)) def wait_allcomplete(self): self.work_queue.join()class WorkThread(threading.Thread): def __init__(self, work_queue): threading.Thread.__init__(self) self.work_queue = work_queue self.thread_stop = False self.setDaemon(True) self.start() def run(self): while not self.thread_stop: try: do, args, kwargs = self.work_queue.get(block=True) do(*args, **kwargs) self.work_queue.task_done() except Empty: self.stop() except Exception: print(traceback.format_exc(), file=sys.stderr) self.work_queue.task_done() continue def stop(self): self.thread_stop = True
测试:
import timestart = time.time()def work(): time.sleep(2) print(3)workpool = WorkPool()for i in range(10): workpool.addwork(work)workpool.wait_allcomplete()print(time.time() - start)
Github
https://github.com/Mohanson/workpool
0 0
- Python实现线程池
- python实现线程池
- python线程池实现
- Python实现线程池
- Python线程池实现
- Python实现线程池
- 线程池python实现
- python 线程池实现
- python实现线程池
- python实现线程池
- python实现线程池
- Python 线程池的实现
- Python的线程池实现
- python线程池的实现
- python:线程池的实现
- Python线程池简单实现
- python实现的线程池
- 对于python实现线程池的例子
- SQL Server 2008如何创建定期自动备份任务
- java.util 和 java.awt的区别 java.util.list 和 java.awt.list的区别
- Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境
- ./configure 参数详解
- Linux umount 报 device is busy 的处理方法
- python 线程池实现
- 字典树例题介绍:ZOJ 1109 Language of FatMouse,HDOJ 1075hdoj What Are You Talking About
- Redis学习
- 手势侧滑,比较全的概述
- Zend Studio mac破解使用
- 如何编译安装源码包
- hdu4605Magic Ball Game 树状数组
- 摄像机标定
- Qt开源的压缩包的提取