Python之创建low版的线程池

#!/user/bin/evn python
# -*- coding:utf-8 -*-
import threading,time
import queue
#创建线程池类
class ThreadPool(object):
    def __init__(self,max_num=20):
        #创建队列
        self.queue=queue.Queue(max_num)
        for i in range(max_num):
            #往队列里面依次放入20个线程类名(threading.Thread)
            self.queue.put(threading.Thread)

     #获取线程的方法
    def get_thread(self):
        #从队列里面依次取出线程名
        return self.queue.get()
    #添加线程名到队列里面
    def add_thread(self):
        self.queue.put(threading.Thread)

def func(p,i):
    time.sleep(1)
    print(i)
    p.add_thread()

#创建线程池对象
p=ThreadPool()

for i in range(100):
    ret=p.get_thread()#获取线程类名
    t=ret(target=func,args=(p,i,))#创建线程对象
    t.start()#线程开始执行
时间: 2024-10-07 18:39:59

Python之创建low版的线程池的相关文章

Executors创建的4种线程池的使用

Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程.newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待.newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行.newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有

python第十一天-----补:线程池

低版本: 1 #!/usr/bin/env python 2 import threading 3 import time 4 import queue 5 6 7 class TreadPool: 8 """ 9 将线程加入到队列中作为资源去完成任务 10 优点:简单好写容易理解 11 缺点:太尼玛多了..... 12 """ 13 def __init__(self, maxsize): 14 self.maxsize = maxsize 1

如何创建Java中的线程池

线程是Java的一大特性,它可以是给定的指令序列.给定的方法中定义的变量或者一些共享数据(类一级的变量).在Java中每个线程有自己的堆栈和程序计数器(PC),其中堆栈是用来跟踪线程的上下文(上下文是当线程执行到某处时,当前的局部变量的值),而程序计数器则用来跟踪当前线程正在执行的指令. 一个线程不能访问另外一个线程的堆栈变量,而且这个线程必须处于如下状态之一: 1.排队状态(Ready),在用户创建了一个线程以后,这个线程不会立即运行.当线程中的方法start()被调用时,这个线程就会进行排队

C++版简单线程池

需求 之前写过一个C#版本的简单线程池http://blog.csdn.net/ylbs110/article/details/51224979 由于刚刚学习了C++11新特性中的future,于是想到用它来实现一个线程池. 实现 思路基本和C#版本的一样,主要区别是委托的实现,线程句柄的不同和线程锁: 本来C++有function模板,但是实现起来比较麻烦,这里主要是实现线程池,所以动态参数的委托就不实现了,直接使用typedef void(*Func)();来实现一个无参数无返回值的函数指针

小白成长之路:初识python(六) --python线程池

#!/usr/bin/env python# -*- coding:utf-8 -*-import threadingimport queueimport time"""对照着武老师的课程自己跟着做了一个线程池,主要的思路就是把要执行的任务放进队列中然后创建若干个线程不断地从队列中获取任务并执行相对比low B 版的线程池有很大改进,姑且叫low A版吧...""" Stop_Flag = object() class ThreadPool(ob

一个简单的python线程池框架

初学python,实现了一个简单的线程池框架,线程池中除Wokers(工作线程)外,还单独创建了一个日志线程,用于日志的输出.线程间采用Queue方式进行通信. 代码如下: 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 __author__ = "pandaychen" 5 6 import Queue 7 import sys 8 import os 9 import threading 10 import time 11

Python:线程、进程与协程(7)——线程池

前面转载了一篇分析进程池源码的博文,是一篇分析进程池很全面的文章,点击此处可以阅读.在Python中还有一个线程池的概念,它也有并发处理能力,在一定程度上能提高系统运行效率:不正之处欢迎批评指正. 线程的生命周期可以分为5个状态:创建.就绪.运行.阻塞和终止.自线程创建到终止,线程便不断在运行.创建和销毁这3个状态.一个线程的运行时间可由此可以分为3部分:线程的启动时间.线程体的运行时间和线程的销毁时间.在多线程处理的情景中,如果线程不能被重用,就意味着每次创建都需要经过启动.销毁和运行3个过程

Python之路【第八篇】python实现线程池

线程池概念 什么是线程池?诸如web服务器.数据库服务器.文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务.构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务.但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大.所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁,这样就引入了“池”的概念,“池”的概念使得人们可以定制一定量的资源,然后对这些资源

python 线程池使用

传统多线程方案会使用"即时创建, 即时销毁"的策略.尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器将处于不停的创建线程,销毁线程的状态. 一个线程的运行时间可以分为3部分:线程的启动时间.线程体的运行时间和线程的销毁时间.在多线程处理的情景中,如果线程不能被重用,就意味着每次创建都需要经过启动.销毁和运行3个过程.这必然会增加系统相应的时间,降低了效率. 使用线程池:由于线程预先被创建并放入线程池中,同时处理完