当前位置: 首页 > 图灵资讯 > 行业资讯> python多线程如何自定义线程类?

python多线程如何自定义线程类?

来源:图灵python
时间: 2024-09-18 15:12:13

在python中使用多线程处理程序比一步一步地处理节省了很多时间,并通过创建和继承PythonThread类,重写run()方法,通过自定义本文介绍了python多线程创建线程Thread类定义和如何定制线程类的过程。

一、Thread类定义

threading.Thread(self,group=None,target=None,name=None,agrs=(),kwargs=None,*,daemon=None)

未来扩展的参数group预留;

参数target是在线程启动后执行的可调用对象;

参数name是线程的名称。默认值为“Thread-N“,N是一个数字;

参数args和kwargs分别表示调用target时的参数列表和关键字参数。

二、自定义线程类

1、创建一个类,继承Python的Thread类,并重写run()方法以实现具体的执行顺序。

fromthreadingimportThread
importtime

#创建一个类,继承Python的Thread类,并重写run()方法,实现具体的执行顺序,由自己定义
classMyThread(Thread):
'''time.sleep代表等待10秒后才能执行'''
defrun(self):
time.sleep(2)
print("我是线程类...")

'''从源码Thread类中的run方法复制下一段,当然
不可能,因为继承了Thread,我会去父亲那里找。我只是在这里测试'''
try:
ifself._target:
self._target(*self._args,**self._kwargs)
finally:
#Avoidarefcycleifthethreadisrunningafunctionwith
#anargumentthathasamemberthatpointstothethread.
delself._target,self._args,self._kwargs

2、定义函数

defBar():
print("Bar...")

3、线程是通过自定义的线程类创建的,并与函数Bar相关,最终执行此线程。

t1=MyThread(target=Bar)
t1.start()

print("守护线程的执行已经结束...")

需要注意:

自定义线程不能指定target,因为自定义线程中的任务统一在run方法中;

启动线程统一调用start方法,不要直接调用run方法,因为这不是使用子线程执行任务。

以上是python多线程自定义线程的介绍,希望对大家有所帮助~python学习推荐更多:python教程。