Python多线程(threading模块)
来源:互联网 发布:百胜软件股份有限公司 编辑:程序博客网 时间:2024/06/05 19:54
CPU越来越快我们不能满足Python同一时间只做一件事,需要三心二意,多任务处理(mutiltasking)这就需要使用多线程,让程序在同一时间做很多事。
下面简单介绍threading模块。
Thread 是threading模块中最重要的类之一,可以使用它来创建线程。有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法;另一种是创建一个threading.Thread对象,在它的初始化函数(init)中将可调用对象作为参数传入。
下面的代码是创建threading.Thread对象,对于初学使用者已经够了。
import threadingfrom time import ctime, sleepdef event1(func): for i in range(2): print("时间:%s 我正在学习 %s。" % (ctime(), func)) sleep(2)def event2(func): for i in range(2): print("时间:%s 我正在听%s。" % (ctime(), func)) sleep(3)threads = []t1 = threading.Thread(target=event1,args=('Python',))threads.append(t1)t2 = threading.Thread(target=event2,args=('Shape of you',))threads.append(t2)if __name__ == '__main__': for t in threads: t.setDaemon(True) t.start() print("all over %s" % ctime())
看结果时间相同。
threading.Thread类的初始化函数原型:
def init(self, group=None, target=None, name=None, args=(), kwargs={})
参数group是预留的,用于将来扩展;
参数target是一个可调用对象(也称为活动[activity]),在线程启动后执行;
参数name是线程的名字。默认值为“Thread-N“,N是一个数字。
参数args和kwargs分别表示调用target时的参数列表和关键字参数。
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是一个数值类型,表示超时时间,如果未提供该参数,那么主调线程将一直堵塞到被调线程结束。
threading.Timer
threading.Timer是threading.Thread的子类,可以在指定时间间隔后执行某个操作。
threading.Event
Event实现与Condition类似的功能,不过比Condition简单一点。它通过维护内部的标识符来实现线程间的同步问题。(threading.Event和.NET中的System.Threading.ManualResetEvent类实现同样的功能。)
Event.wait([timeout])
堵塞线程,直到Event对象内部标识位被设为True或超时(如果提供了参数timeout)。
Event.set()
将标识位设为Ture
Event.clear()
将标识伴设为False。
Event.isSet()
判断标识位是否为Ture。
threading.active_count()
threading.activeCount()
获取当前活动的(alive)线程的个数。
threading.current_thread()
threading.currentThread()
获取当前的线程对象(Thread object)。
threading.enumerate()
获取当前所有活动线程的列表。
threading.settrace(func)
设置一个跟踪函数,用于在run()执行之前被调用。
threading.setprofile(func)
设置一个跟踪函数,用于在run()执行完毕之后调用。
- Python 多线程(threading模块)
- Python 多线程(threading模块)
- Python多线程(threading模块)
- Python 多线程 Threading模块
- python threading多线程模块
- python多线程-threading模块
- python多线程模块threading
- python多线程编程(二)--threading模块
- python多线程编程(二)--threading模块
- python多线程模块--threading三部曲(一)
- python threading模块/thread多线程(1)
- Python多线程--(2)之threading模块
- python多线程模块threading简例
- [Python]多线程--threading模块实现
- Python的多线程threading模块
- python多线程编程----threading模块
- python模块threading实现多线程
- Python 多线程编程threading模块
- MVC,MVP 和 MVVM 的图示
- 计算机是如何启动的?
- IntelliJ IDEA 快捷键联想
- Wannafly模拟赛4 A 题 Laptop 【二维偏序问题 + 树状数组维护】
- POJ 2456 Aggressive cows 二分
- Python多线程(threading模块)
- java鬼混笔记:springboot 7、springboot整合mybatis后再加上druid数据库连接池
- 计算时间差函数集合
- [自动驾驶]CarND-Vehicle-Detection
- pygame游戏之旅9:添加介绍
- 567. Permutation in String
- Python的psutil模块监控内存代码
- 前端页面c标签之foreach循环
- 2017年10月20日 第十一次总结