python多线程编程----threading模块

1、threading 模块中的内容

- Thread: 一个可执行线程对象

- Lock: 原始的Lock对象 与thread模块中一样

- RLock: 允许单个线程多次请求的Lock

- Condition: 线程等待直到条件满足

- Event : 事件发生时,唤醒所有等待进程

- Semaphore:信号量,标识有限资源的个数

- Timer: 定时启动线程

- Barrier: 等待指定的所有的进程都来到

2、daemon threads 守护进程

如果你的主线程准备退出,并且你并不关心子线程是否完成,可以设置daemon,

‘thread.daemon = True’,表示该线程用于等待其子线程

3、Thread 类

类属:name: 线程名; ident:线程id; daemon:标识线程是否是守护线程

类方法:

init(group=None,target=None,name=None,args=(),kwargs={},verbose=None,daemon=None”) 类构造函数,target是可执行函数

start(): 开始执行

run(): 定义线程功能,一般在子类中实现

join(timeout=None): 挂起直到调用其的线程结束,或等待timeout的时间

getName(): 返回线程名

setName(name): 设置线程名

isAlive/is_alive() : 线程是否还在运行

例子1:

import threading
from time import sleep, ctime
loops = [4,2]
def loop(nloop, nsec):
    print ‘start loop‘,nloop
def main():
    print ‘starting‘
    threads=[]
    nloops=range(len(loops))
    for i in nloops:
        t = threading.Thread(target=loop,args=(i,loops[i])
        threads.append(t)
    for i in nloops:
        thread[i].start()  # start threads
    for i in nloops:       # wait for all
        threads[i].join() # threads to finish
if __name__ == ‘__main__‘:
    main()

这里的target也可以是可调用的类实例

例子2:

import threading
form time import sleep, ctime
loops=[4,2]
class ThreadFunc(object):
    def __init__(self,func,args,name=‘‘):
        self.name=name
        self.func=func
        self.args=args
    def __call__(self):
        self.func(*self.args)
def loop(nloop,nsec):
    print ‘start loop‘,nloop
def main():
    print ‘starting‘
    threads = []
    nloops= range(len(loops))
    for i in nloops: # create all threads
        t = threading.Thread(
            target=ThreadFunc(loop,(i,loops[i]),loop.__name__))
            threads.append(t)
    for i in nloops: #start all threads
        threads.append(t)
    for i in nloops: #wait for completion
        threads[i].join()
    print "all done"
if __name__=‘__main__‘:
    main()
时间: 2024-08-23 05:15:50

python多线程编程----threading模块的相关文章

python多线程与threading模块

python多线程与_thread模块 中介绍了线程的基本概念以及_thread模块的简单示例.然而,_thread模块过于简单,使得我们无法用它来准确地控制线程,本文介绍threading模块,它提供了更强大的多线程管理方案. threading模块的对象 Thread 表示一个执行线程的对象 Lock 锁原语 RLock 可重入锁对象,使单一线程可以再次获得已持有的锁(递归锁) Condition 条件变量对象,使得一个线程等待另一个线程满足特定条件 Event 条件变量的通用版本,任意数量

python多线程编程-queue模块和生产者-消费者问题

摘录python核心编程 本例中演示生产者-消费者模型:商品或服务的生产者生产商品,然后将其放到类似队列的数据结构中.生产商品中的时间是不确定的,同样消费者消费商品的时间也是不确定的. 使用queue模块(python2.x版本中,叫Queue)来提供线程间通信的机制,从而让线程之间可以分享数据.具体而言,就是创建一个队列,让生产者(线程)在其中放入新的商品,而消费者(线程)消费这些商品. 下表是queue模块的部分属性: 属性 描述 queue模块的类 Queue(maxsize=0) 创建一

Python3 多线程编程 threading模块

性能自动化测试除了用jmeter还可以用python threading模块做 一.threading模块定义 Python 2.4中包含的较新的线程模块为线程提供了更强大的高级支持. 线程模块公开线程模块的所有方法,并提供一些额外的方法 activecount()——返回活动的线程对象的数量. currentthread()——返回调用方线程控件中线程对象的数量. enumerate()——返回当前活动的所有线程对象的列表. 除了方法之外,线程模块还有实现线程的Thread类实现了hreadi

python多线程之 threading模块详解

1.threading.Thread对象[创建线程的主要对象]: 方法:start():启动线程   run():启动线程后自动调用的方法 join([timeout]):等待到被调用的线程终止   is_alive():返回线程活动状态 属性:name:线程名   ident:线程ID号   daemon:后台标志 2.创建线程的方法: 1:实例化threading.Thread对象 ths = threading.Thread( target = None, name = None, arg

day-3 聊聊python多线程编程那些事

python一开始给我的印象是容易入门,适合应用开发,编程简洁,第三方库多等等诸多优点,并吸引我去深入学习.直到学习完多线程编程,在自己环境上验证完这句话:python解释器引入GIL锁以后,多CPU场景下,也不再是并行方式运行,甚至比串行性能更差.不免有些落差,一开始就注定了这门语言迟早是有天花板的,对于一些并行要求高的系统,python可能不再成为首选,甚至是完全不考虑.但是事情也并不是绝对悲观的,我们已经看到有一大批人正在致力优化这个特性,新版本较老版本也有了一定改进,一些核心模块我们也可

Python:使用threading模块实现多线程(转)

分类: python   标签: thread    评论: 暂无评论   阅读:5,420 views 综述 Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势. 在Python中我们主要是通过thread和 threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用

Python多线程(threading)学习总结

注:此文除了例子和使用心得是自己写的,很多都是Python核心编程中的原文.原文文风应该能看出来,就不每个地方单独表明出处了. 线程(有时被称为轻量级进程)跟进程有些相似,不同的是,所有的线程运行在同一个进程中,共享相同的运行环境.它们可以想像成是在主进程或"主线程"中并行运行的"迷你进程". 线程有开始,顺序执行和结束三部分.它有一个自己的指令指针,记录自己运行到什么地方.线程的运行可能被抢占(中断),或暂时的被挂起(也叫睡眠),让其它的线程运行,这叫做让步.一个

python 多线程编程

一)线程基础 1.创建线程: thread模块提供了start_new_thread函数,用以创建线程.start_new_thread函数成功创建后还能够对其进行操作. 其函数原型: start_new_thread(function,atgs[,kwargs]) 其參数含义例如以下: function: 在线程中运行的函数名 args:元组形式的參数列表. kwargs: 可选參数,以字典的形式指定參数 方法一:通过使用thread模块中的函数创建新线程. >>> import th

Python多线程编程

原文 运行几个线程和同时运行几个不同的程序类似,它有以下好处: 一个进程内的多个线程和主线程分享相同的数据空间,比分开不同的过程更容易分享信息或者彼此通信. 线程有时叫做轻量化过程,而且他们不要求更多的内存开支:它们比过程便宜. 一个线程的顺序是:启动,执行和停止.有一个指令指针跟踪线程正在运行的上下文在哪里. 它可以被抢占(中断) 它能暂时被挂起(也叫做休眠),而别的线程在运行--这也叫做yielding(让步). 开始一个新线程: 要生成一个线程,需要调用在thread模块中方法如下: th