600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Python多线程(threading模块)

Python多线程(threading模块)

时间:2024-06-19 01:20:59

相关推荐

Python多线程(threading模块)

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类的初始化函数原型:

definit(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()执行完毕之后调用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。