`
liseor
  • 浏览: 48341 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

python 线程控制类

 
阅读更多
class WorkManager(object):
    def __init__(self, work_num=1000,thread_num=2):
        self.work_queue = Queue.Queue()
        self.threads = []
        self.__init_work_queue(work_num)
        self.__init_thread_pool(thread_num)

    #----初始化线程-------------------------------------------------------------------------- 
    def __init_thread_pool(self,thread_num):
        for i in range(thread_num):
            self.threads.append(Work(self.work_queue))
    #----初始化工作队列-------------------------------------------------------------------------- 
    def __init_work_queue(self, jobs_num):
        for i in range(jobs_num):
            self.add_job(do_job, i)
    #----添加一项工作入队-------------------------------------------------------------------------- 
    def add_job(self, func, *args):
        self.work_queue.put((func, list(args)))#任务入队,Queue内部实现了同步机制
    #----等待所有线程运行完毕-------------------------------------------------------------------------- 
    def wait_allcomplete(self):
        for item in self.threads:
            if item.isAlive():item.join()

class Work(threading.Thread):
    def __init__(self, work_queue):
        threading.Thread.__init__(self)
        self.work_queue = work_queue
        self.start()
    #-----死循环,从而让创建的线程在一定条件下关闭退出
    def run(self):        
        while True:
            try:
                do, args = self.work_queue.get(block=False)#任务异步出队,Queue内部实现了同步机制
                do(args)
                self.work_queue.task_done()#通知系统任务完成
            except:
                break
def do_job(args):
    pass
work_manager =  WorkManager(num,10)
work_manager.wait_allcomplete()

 

分享到:
评论

相关推荐

    python 线程的暂停, 恢复, 退出详解及实例

    ### Python线程的暂停、恢复与退出详解 在Python中,多线程是通过`threading`模块来实现的。然而,在默认情况下,该模块并未直接提供暂停、恢复以及退出线程的功能。这意味着一旦线程启动(即调用了`start()`方法)...

    python线程教程,python线程学习笔记.doc

    在本文中,我们将深入探讨Python线程的基础知识,包括线程如何访问全局变量、线程安全问题、线程同步以及互斥锁的使用。 首先,让我们看看线程如何访问全局变量。在Python中,一个进程内的所有线程共享全局变量。...

    python 线程的使用 python线程基础知识,提供python2示例代码,供参考学习

    `thread` 模块较为底层,适合对线程控制有精细化需求的场景,而 `threading` 模块则更加高级和方便,它提供了更多的同步机制,如锁、事件对象等,对于大多数应用来说,`threading` 模块已经足够满足需求。...

    Python多线程学习

    在Python中,使用线程主要有两种方法:一是通过函数的方式,二是利用类来封装线程对象。这两种方式都是基于Python的标准库`thread`和`threading`来实现的。 #### 函数方式创建线程 使用`thread`模块中的`start_new...

    单线程与多线程python爬虫地图瓦片源码

    3. `ThreadPoolExecutor.py`:Python的`concurrent.futures`模块提供了一个`ThreadPoolExecutor`类,用于管理和执行基于线程的任务队列。在这个文件中,可能定义了线程池的实例,用于并发地执行下载任务。 总的来说...

    python线程与进程实现方式

    装饰器在Python中是一个强大的工具,它可以修改或增强函数、类等对象的行为。在处理线程和进程时,装饰器可以帮助我们轻松地实现对并发任务的管理和监控。例如,可以编写一个装饰器来自动启动一个新的进程或线程来...

    python 线程的五个状态

    Python线程是并发执行任务的重要工具,特别是在处理I/O密集型任务时,通过多线程可以提高程序的响应速度和效率。线程的状态管理是理解并优化多线程程序的关键,下面将详细阐述Python线程的五个状态及其转换。 1. ...

    python 多线程实现多个网址的多次快速访问

    在Python编程中,多线程是一种并发执行任务的机制,尤其在处理I/O密集型任务如网络请求时,能够显著提高程序效率。...在编写这样的程序时,我们需要关注线程安全、资源管理以及并发控制,以确保程序的正确性和高效性。

    python多线程定时器

    总结起来,`python多线程定时器`的实现涉及到Python的`threading`和`time`模块,通过`Thread`和`Timer`类来创建和管理线程,使用定时器控制线程的启动时间。主程序`main.py`使用这些工具来安排多个任务按设定的间隔...

    Python多线程下载管理

    4. **下载速度控制**:如果需要限制下载速度,可以使用`time.sleep()`或第三方库如`pySmartDL`来控制每个线程的下载速率。 5. **取消下载**:在某些情况下,用户可能希望中断下载。为此,可以设置一个标志,当用户...

    Python自定义线程类简单示例

    了解Python线程的使用对于编写并发程序至关重要。在Python中,线程主要用于提高程序的并发性,特别是在等待I/O操作(如网络通信或文件读写)时,可以使用线程来避免程序阻塞。 然而,需要注意的是,由于全局解释器...

    python3之多线程及线程锁的基础用法

    为了避免这种情况,Python 的 `threading` 模块提供了 `Lock` 类来实现互斥锁,以确保任何时刻只有一个线程能够访问共享资源。 ```python lock = threading.Lock() # 创建锁对象 # 使用锁 lock.acquire() try: # ...

    python使用threading获取线程函数返回值的实现方法

    `threading`模块是Python的标准库之一,它提供了线程管理的功能,包括创建、同步和控制线程。然而,Python的`threading`模块本身并不直接支持获取线程函数的返回值,这需要我们通过一些额外的方式来实现。以下将详细...

    Python3 多线程笔记

    ### Python3多线程知识点详解...通过以上介绍可以看出,在Python3中,多线程编程涉及到了线程状态管理、线程间的同步控制以及线程间的通信等核心概念和技术细节。这些知识点对于开发高效稳定的多线程应用程序至关重要。

    Python信号与槽、多线程、类学习笔记.pdf

    Python提供了多种同步机制,例如锁(Lock)、信号量(Semaphore)、事件(Event)等,可以用来控制线程间的协作与数据的同步访问。 最后是关于类的学习。Python是一种面向对象的编程语言,类是面向对象编程的基础。...

    python多线程FTP密码破解

    3. 创建线程类:这个类会继承自`threading.Thread`,并重写`run`方法。在`run`方法中,每个线程会尝试一个密码并尝试连接FTP服务器。 ```python class BruteForceThread(threading.Thread): def __init__(self, ...

    基于python的多线程例子,详细介绍了多线程处理

    在Python中,我们可以使用`threading`模块来创建和控制线程。`threading.Thread`类用于创建新的线程,传入一个可调用对象(如函数或方法),这个对象将在新线程中运行。例如: ```python import threading def ftp...

    python多线程

    Python多线程是指在Python编程语言中使用线程来执行多任务的技术。线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。多线程编程是并发编程的一部分,其目的是为了提高程序的...

Global site tag (gtag.js) - Google Analytics