我对python线程池的理解

简介:
#!/usr/bin/env python
from Queue import Queue
from threading import Thread
import random
import time

def person(i,q):
    while True:  #这个人一直处与可以接活干的状态
        q.get()
        print "Thread",i,"do_job"
        time.sleep(random.randint(1,5))#每个人干活的时间不一样,自然就会导致每个人分配的件数不同(这里是干活的地方)
        q.task_done()   #接到的活做完了,向上汇报

q=Queue()

分配1000件活
for x in xrange(100):
    q.put(x)

叫了5个人去干活    
for i in xrange(5):
    worker=Thread(target=person,args=(i,q))
    worker.setDaemon(True)
    worker.start()

q.join()  #这5个人把1000件活都做完后,结束.

线程池的概念就是我们将1000件活,原本由1000个人来做,现在只分配5个人来做,这5个人就是线程池数,并且他们处与一直运行状态,除非主程序结束,否则,将不会结束。
测试:
     我们现不分配活给他们,看他们处与什么状态.
     注释
     #for x in xrange(100):
     #    q.put(x)
     并且在q.join()后面添加
     time.sleep(120)  主程序2分钟后退出。
     查看:
     root@badboy-virtual-machine:~#ps aux|grep test.py
     root      3907  0.0  0.2  54344  4400 pts/0    Sl+  15:56   0:00 python test.py
     
     root@badboy-virtual-machine:~# pstree -p |grep python
        |-sshd(937)---sshd(2729)-+-bash(2850)---python(3907)-+-{python}(3908)
        |                        |                           |-{python}(3909)
        |                        |                           |-{python}(3910)
        |                        |                           |-{python}(3911)
        |                        |                           `-{python}(3912)

    看到没,虽然他们现在没接到任务,但他们一直处与活动状态,随时接受任务. 



本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/1435042,如需转载请自行联系原作者

相关文章
|
8天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
18天前
|
算法 数据处理 Python
Python并发编程:解密异步IO与多线程
本文将深入探讨Python中的并发编程技术,重点介绍异步IO和多线程两种常见的并发模型。通过对比它们的特点、适用场景和实现方式,帮助读者更好地理解并发编程的核心概念,并掌握在不同场景下选择合适的并发模型的方法。
|
1月前
|
并行计算 安全 Unix
Python教程第8章 | 线程与进程
本章主要讲解了线程与进程的概念,多线程的运用以及Python进程的相关案例学习
36 0
|
1月前
|
分布式计算 并行计算 Java
浅析Python自带的线程池和进程池
浅析Python自带的线程池和进程池
75 0
|
25天前
|
安全 Python
Python中的并发编程:多线程与多进程技术探究
本文将深入探讨Python中的并发编程技术,重点介绍多线程和多进程两种并发处理方式的原理、应用场景及优缺点,并结合实例分析如何在Python中实现并发编程,以提高程序的性能和效率。
|
1月前
|
数据采集 存储 Java
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
|
1月前
|
安全 调度 Python
Python中如何实现多线程?请举例说明。
Python中如何实现多线程?请举例说明。
14 0
|
1月前
|
Java 调度 Python
深入解析 Python asyncio 库:如何使用线程池实现高效异步编程
深入解析 Python asyncio 库:如何使用线程池实现高效异步编程
44 0
|
1天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
14 0
|
17天前
|
数据采集 Java API
python并发编程: Python使用线程池在Web服务中实现加速
python并发编程: Python使用线程池在Web服务中实现加速
17 3
python并发编程: Python使用线程池在Web服务中实现加速

热门文章

最新文章