Python简单的线程池
class ThreadPool(object):
    def __init__(self, max_num=20):
        # 创建一个队列,队列里最多只能有10个数据
        self.queue = queue.Queue(max_num)
        # 在队列里填充线程类
        # 【线程类、线程类、线程类、线程类、线程类、线程类、线程类】
        for i in range(max_num):
            self.queue.put(threading.Thread)
    def get_thread(self):
        # 去队列里去数据,
        # queue特性,如果有,对列里那一个出来
        #            如果没有,阻塞,
        return self.queue.get()
    def add_thread(self):
        # 往队列里再添加一个线程类
        self.queue.put(threading.Thread)
# pool = ThreadPool(10)
pool = ThreadPool(10)
def func(arg, p):
    # 函数内容
    print(arg)
    import time
    time.sleep(2)
    # 在线程池里重新添加一个线程(将线程归还给线程池)
    p.add_thread()
for i in range(30):
    # 去线程池里那一个线程,如果有,则池子里拿,如果没有,等直到有人归还线程到线程池
    thread = pool.get_thread()
    # thread = threading.Thread
    t = thread(target=func, args=(i, pool))
    t.start()
Python简单的线程池的更多相关文章
- python day 20: 线程池与协程,多进程TCP服务器
		目录 python day 20: 线程池与协程 2. 线程 3. 进程 4. 协程:gevent模块,又叫微线程 5. 扩展 6. 自定义线程池 7. 实现多进程TCP服务器 8. 实现多线程TCP ... 
- 【C/C++开发】C++实现简单的线程池
		C++实现简单的线程池 线程池编程简介: 在我们的服务端的程序中运用了大量关于池的概念,线程池.连接池.内存池.对象池等等.使用池的概念后可以高效利用服务器端的资源,比如没有大量的线程在系统中进行上下 ... 
- 简单C++线程池
		简单C++线程池 Java 中有一个很方便的 ThreadPoolExecutor,可以用做线程池.想找一下 C++ 的类似设施,尤其是能方便理解底层原理可上手的.网上找到的 demo,基本都是介绍的 ... 
- 『Python』 ThreadPool 线程池模板
		Python 的 简单多线程实现 用 dummy 模块 一句话就可以搞定,但需要对线程,队列做进一步的操作,最好自己写个线程池类来实现. Code: # coding:utf-8 # version: ... 
- 【Python】多线程-线程池使用
		1.学习目标 线程池使用 2.编程思路 2.1 代码原理 线程池是预先创建线程的一种技术.线程池在还没有任务到来之前,创建一定数量的线程,放入空闲队列中.这些线程都是处于睡眠状态,即均为启动,不消耗 ... 
- Python之路——线程池
		1 线程基础 1.1 线程状态 线程有5种状态,状态转换的过程如下图所示: 1.2 线程同步——锁 多线程的优势在于可以同时运行多个任务(至少感觉起来是这样,其实Python中是伪多线程).但是当线程 ... 
- Python多线程、线程池及实际运用
		我们在写python爬虫的过程中,对于大量数据的抓取总是希望能获得更高的速度和效率,但由于网络请求的延迟.IO的限制,单线程的运行总是不能让人满意.因此有了多线程.异步协程等技术. 下面介绍一下pyt ... 
- java基础:简单实现线程池
		前段时间自己研究了下线程池的实现原理,通过一些源码对比,发现其实核心的东西不难,于是抽丝剥茧,决定自己实现一个简单线程池,当自已实现了出一个线程池后.发现原来那么高大上的东西也可以这么简单. 先上原理 ... 
- Linux  C  一个简单的线程池程序设计
		最近在学习linux下的编程,刚开始接触感觉有点复杂,今天把线程里比较重要的线程池程序重新理解梳理一下. 实现功能:创建一个线程池,该线程池包含若干个线程,以及一个任务队列,当有新的任务出现时,如果任 ... 
随机推荐
- centos 7 安装gcc g++
			yum install gcc gcc-c++ over. ps:如果系统报yum命令未找到,退出重新登陆试试root. 
- [转]2年SQL Server DBA调优方面总结
			2年SQL Server DBA调优方面总结 当2年dba 我觉得,有些东西需要和大家分享探讨,先书单. 书单 1.<深入解析SQL Server 2008 系列> 这个就是mssql ... 
- Spine U3D整合流程问题
			Spine U3D整合流程问题 What: 公司2d项目开发,动画外包的spine.本来在spine里面一切正常,但是导入u3d运行库的时候动画切换的时候原来的动画是好的,一旦切换了就乱帧了. 如下结 ... 
- php   RSA 加密  与java加密互交,java解密
			<? php class encrypt{ var $pub_key; function redPukey() { $pubKey = "MIIDhzCCAm+gAwIBAgIGASY ... 
- linux 下 查看进程的启动时间和运行时间
			$ps -A -opid,stime,etime,args | grep switcher : : grep switcher Jan22 :: /home/a/search/switcher//bi ... 
- LeetCode 格雷码序列的生成
			问题概述:在一组数的编码中,若随意两个相邻的代码仅仅有一位二进制数不同.则称这样的编码为格雷码. 2位数的格雷码序列:00 : 001 : 111 : 310 : 2找规律:假设要求n位的格雷码,先要 ... 
- oracle常用函数使用大全 Oracle除法(转)
			http://blog.csdn.net/chenmeng2192089/article/details/9155625 一.运算符算术运算符:+ - * / 可以在select 语句中使用连接运算符 ... 
- StandardServer.await: create[8005]java.net.BindException: Address already in use: JVM_Bind错误
			StandardServer.await: create[8005]java.net.BindException: Address already in use: JVM_Bind错误. 原因是:To ... 
- wget 命令
			wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能和特点:(1)支持断点下传功能:这一点,也是网络蚂蚁和Fl ... 
- Mybatis(二):Mybatis的映射文件sqlmapper详解
			MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 ... 
