美文网首页
python线程池的简单实现

python线程池的简单实现

作者: slords | 来源:发表于2017-11-24 12:04 被阅读0次

为了在项目中管理优化线程数量,线程池是必不可少的。Python的在multiprocess中有进程池作为进程管理,但是Python的线程池却需要使用第三方模块进行支持。为了简单实现线程池,试做了以下线程池类。

from threading import lock, Thread, Event
from queue import Queue
import traceback


class thread_pool(object):

    __active = False

    def __init__(self, pool_size=3):
        self.__event = Event()
        self.__lock = lock()
        self.__func_queue = Queue()
        self.__thread_list = [Thread(target=self.handle_thread) 
                                  for i in range(pool_size)]
        self.__inited = 0
        self.__active = True
        self.__start_threads_list()
       
    def __start_threads_list(self):
        self.__lock.acquire()
        for thread in self.__thread_list[self.__inited:]:
            thread.start()
        self.__inited = len(threads_list)
        self.__lock.release()
        

    def join(self):
        #将线程池所有线程join
        self.__active = False
        for t in self.__thread_list:
            t.join()

    def handle_thread(self):
        handler = self.__func_queue.get(block=True)
        while self.__active:
            try:
                target, args, kwargs = handler
                target(*args, **kwargs)
                handler = self.__func_queue.get(block=True)
            except Exception as e:
                traceback.print_exc()

    def add_thead(target=func, args=(), kwargs={})
            self.__func_queue.put((target, args, kwargs))

    def expand_pool_size(self, pool_size=1):
            self.__thread_list += [Thread(target=self.handle_thread) 
                                  for i in range(pool_size)]
            self.__start_threads_list()

相关文章

  • Python简单实现线程池

    背景上线的Django网站需要一个后台文件上传后解析的服务,最开始采用的是定时任务来实现的,每5分钟从数据库取一个...

  • python线程池的简单实现

    为了在项目中管理优化线程数量,线程池是必不可少的。Python的在multiprocess中有进程池作为进程管理,...

  • 利用Python快速实现一个线程池,非常简单

    雷猴啊,兄弟们!今天来展示一下如何用Python快速实现一个线程池。 python实现一个线程池 一、序言[htt...

  • Java - 线程池总体预览

    Executors提供多种线程池的实现,下面对每种线程池进行简单介绍。 1. newCachedThreadPoo...

  • 线程池简易实现和线程池源码

    线程池简单实现 源码 ThreadPoolExecutor 使用 int 的高 3 位来表示线程池状态,低 29 ...

  • python线程的实现,线程池

    python通过标准库threading实现多线程的运行。程序的运行总要考虑并发,并行数。在多线程程序中为了确保程...

  • 线程以及java线程池实现分享

    线程以及java线程池实现分享 线程简介 JDK线程池的工作原理 JDK线程池的实现细节 1.线程简介-由来 1....

  • 使用@Async注解创建多线程,自定义线程池

    说明 使用@Async注解创建多线程非常的方便,还可以通过配置,实现线程池。比直接使用线程池简单太多。而且在使用上...

  • python线程池

    前段时间经常需要开多个线程完成任务,需要用到线程池,虽然Python自带了线程池的实现,但是有时候还是不太方便,后...

  • [Python系列]Python多线程

    背景:说到多线程,我们会想到的是:异步编程、同步(锁)、共享变量、线程池等等,那么Python里面多线程是如何实现...

网友评论

      本文标题:python线程池的简单实现

      本文链接:https://www.haomeiwen.com/subject/zhokvxtx.html