可以从 Thread 线程类定义一个派生类,然后创建这个派生类的对象。派生类需要重载 __init__()
方法和 __run__()
方法。例如:
# DerivedThread1.py
import threading
class DerivedThread(threading.Thread):
def __init__(self,args):
super(DerivedThread, self).__init__()
self.__args__ = args
def run(self):
print('子线程的参数:%s'%self.__args__ )
DerivedThread((1,)).start()
DerivedThread((2,)).start()
DerivedThread((3,)).start()
print('退出主线程!')
程序输出如下:
子线程的参数:1
子线程的参数:2
子线程的参数:3 退出主线程!
DerivedThread 类的构造函数中只有一个参数 args。通常,派生类的构造函数的参数可以和 Thread 的构造函数的参数一样。例如:
# DerivedThread2.py
import threading
class DerivedThread(threading.Thread):
def __init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None):
super().__init__(group=None, target=target, name=name, daemon=daemon)
self.args = args
self.kwargs = kwargs
def run(self):
print('子线程的参数:%s and %s'%(self.args, self.kwargs))
DerivedThread((1,), kwargs={'name': '王', 'age': 21 }).start()
DerivedThread((2,), kwargs={'name': '张', 'age': 22 }).start()
DerivedThread((3,), kwargs={'name': '李', 'age': 23 }).start()
print('退出主线程!')
程序输出如下:
子线程的参数:() and {'name': '王', 'age': 21}
子线程的参数:() and {'name': '张', 'age': 22}
子线程的参数:() and {'name': '李', 'age': 23}退出主线程!