python中线程的两种创建方式(详细代码示例)
python中线程的两种创建方式:
在python中我们创建线程的方式有两种:一种是编写一个继承自线程的类,重写run()方法;另一种是编写一个函数来运行子进程,通过目标参数指定需要运行的函数名。以下是两种方式的介绍及详细代码示例。
方式一:编写一个继承自线程(线程在模块中)的类,重写运行方法,在run()方法中编写线程的执行代码;使用线程对象的star()方法启动线程可以通过将参数传递到构造方法中,在重写的run()的方法中使用参数的传递。
import threading import time # 创建的Thread类 class HelloThread(threading.Thread): def __init__(self, threadname, address): # 在构造函数中继承父类的name属性 threading.Thread.__init__(self, name=threadname) self.address = address # run()方法的重写 def run(self): print(threading.currentThread().getName() + --子进程正在执行) print(传递的address值: + self.address) # 主程序入口 if __name__ == __main__: # 实例化线程对象 hellothread = HelloThread(child_thread, add_ress) # 启动线程 hellothread.start() # 打开后结果:子线程执行完毕后才会执行主线程 # hellothread.join() # 此处主线程的名称为默认名 print(threading.currentThread().getName() + --主线程正在执行)
方式二:实例化线程对象,通过目标参数指定线程将要执行的函数名,args参数通过元组来传递函数的位置实参,kwargs函数通过字典来确定函数的关键字实参。
import threading def func(address): #子线程 print(threading.currentThread().getName()+--子线程正在执行) print(传递的address值:,address) #实例化Thread对象,并进行参数的传递 hellothread = threading.Thread(target=func,name=方法二,args=(add_ress,)) hellothread.start() # 打开后结果:子线程执行完毕后才会执行主线程 # hellothread.join() #主线程 print(threading.currentThread().getName()+--主线程正在执行)
注意:方式二中的实例化线程对象,并进行参数的传递:如果将线程设置为后台线程(通过设置线程对象中的演示=真变为后台进程,只要前台进程执行完毕即使后台进程没有执行完毕也不会继续执行。)
实例代码如下: hellothread = threading.Thread(target = func,name =方法二,args =(add_ress,),demo = True)