Python多线程
2017-07-24 22:07
295 查看
Python多线程
threading.Thread
Thread
是threading模块中最重要的类之一,可以使用它来创建线程。有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法;另一种是创建一个threading.Thread对象,在它的初始化函数(init)中将可调用对象作为参数传入。
第一种:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/7/24 21:49 # @File : test2.py #初始化线程 import threading class Mythread(threading.Thread): def __init__(self,lock,name): threading.Thread.__init__(self) self.lock=lock self.name=name def run(self): print 'hello',self.name loops=['a','b','c','d','e'] for i in loops: lock=threading.Lock() t1=Mythread(lock,i) t1.start()
第二种:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/7/24 20:38 # @File : test1.py #简单例子 import threading from time import sleep def show(): print 'hello' sleep(1) for i in range(5): t=threading.Thread(target=show) t.start()
Thread类还定义了以下常用方法与属性:
Thread.getName()
Thread.setName()
Thread.name
用于获取和设置线程的名称。
Thread.ident
获取线程的标识符。线程标识符是一个非零整数,只有在调用了start()方法之后该属性才有效,否则它只返回None。
Thread.is_alive()
Thread.isAlive()
判断线程是否是激活的(alive)。从调用start()方法启动线程,到run()方法执行完毕或遇到未处理异常而中断
这段时间内,线程是激活的
Thread.join([timeout])
调用Thread.join将会使主调线程堵塞,直到被调用线程运行结束或超时。参数timeout是一个数值类型,表示超时时间,如果未提供该参数,那么主调线程将一直堵塞到被调线程结束。
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/7/24 21:58 # @File : join02.py import threading from time import sleep def t1(): print 't1 start' sleep(5) print 't1 done' def t2(): print 't2 start' thread1=threading.Thread(target=t1) thread2=threading.Thread(target=t2) thread1.start() thread1.join() #阻塞,只到thread1完成 thread2.start()
threading.RLock和threading.Lock
在threading模块中,定义两种类型的琐:threading.Lock和threading.RLock。它们之间有一点细微的区别
这两种琐的主要区别是:RLock允许在同一线程中被多次acquire。而Lock却不允许这种情况。注意:如果使用RLock,那么acquire和release必须成对出现,即调用了n次acquire,必须调用n次的release才能真正释放所占用的琐。
相关文章推荐
- Python多线程
- python多线程
- Python 多线程抓取图片效率对比
- 【Python之旅】第六篇(三):Python多线程及其使用方法
- Python实现的多进程和多线程功能示例
- Python多线程
- Python 多线程
- 【python】多线程queue导致的死锁问题
- python面向对象多线程爬虫爬取搜狐页面的实例代码
- python 多线程 锁 概念
- Python2 socket 多线程并发 TCPServer Demo
- Python 爬虫(2)多线程
- Python 多线程相关知识学习
- python 多线程使用及Ctrl+C结束
- python之多线程socket服务实现
- python 多线程 XML RPC的实现
- Python中用Ctrl+C终止多线程程序的问题解决
- python多线程实践小结
- Python多线程机制
- python多线程总结