嗨客网搜索

Python threading多线程

Python threading多线程教程

Python 中,使用 threading 模块创建多线程有两种方式,即直接使用线程处理函数创建与 继承 threading.Thread 类实现多线程。

使用线程处理函数创建多线程的用法类似于 thread 模块创建多线程,而使用继承 threading.Thread 类实现多线程的本质就是 重写 其中的 run 方法

线程处理函数创建多线程详解

语法

threading.Thread(target=run, args=("t1",)).start()

参数

参数 描述
run 线程处理函数。
args 线程处理函数的参数,必须是元祖类型。

说明

直接使用 threading.Thread 就可以开启一个线程,通过 target 关键字参数 指定线程处理 函数,通过 args 关键字参数指定线程处理函数的 参数,该参数必须是 元祖 类型。

继承 Thread 类创建多线程

语法

class MyThread(threading.Thread): def __init__(self, params): pass def run(self): pass t1 = MyThread(params) t1.start()

说明

通过继承 Thread 类创建多线程其本质就是重写 threading.Thread 类中的 构造函数 与 run 方法。通过此方法创建自定义线程类后,直接实例化该线程类的对象,并调用 start 方法即可开启线程。

案例

使用 threading 模块创建线程

使用 threading 模块加上线程处理函数创建多线程

import threading import time def handler_haicoder(val): while True: print("thread haicoder run, val =", val) time.sleep(2) def handler_python(val): while True: print("thread python run, val =", val) time.sleep(3) def main(): print("嗨客网(www.haicoder.net)") threading.Thread(target=handler_haicoder, args=("haicoder", )).start() threading.Thread(target=handler_python, args=("python", )).start() if __name__ == '__main__': main() time.sleep(30)

程序运行后,控制台输出如下:

02 python threading多线程.png

我们首先创建了一个 main 函数,在 main 函数里面,我们使用 threading.Thread 创建了两个线程,两个线程的线程处理函数分别为:handler_haicoder 与 handler_python。

同时,threading.Thread 的第二个参数必须是一个元祖,该元祖是用于传递到线程处理函数的参数,因此,我们在两个线程处理函数里面,都获取了我们传递过去的参数。最后,运行程序,我们发现,两个线程交替运行。

使用 threading 模块创建线程

使用 threading 模块自定义线程类创建多线程

import threading import time class MyThread(threading.Thread): def __init__(self, name, n): super(MyThread, self).__init__() self.name = name self.n = n def run(self): while True: print("Thread ", self.name, "is running") time.sleep(self.n) def main(): t1 = MyThread("t1", 3) t2 = MyThread("t2", 2) t1.start() t2.start() if __name__ == "__main__": print("嗨客网(www.haicoder.net)") main()

程序运行后,控制台输出如下:

03 python threading多线程.png

我们创建了一个类 MyThread,MyThread 类继承自 threading.Thread 类,同时,我们在 MyThread 类里面重写了父类的构造函数和 run 函数。

其中,构造函数,是我们在创建自定义线程实例时会自动调用的函数,而 run 函数是我们自定义线程启动后,系统自动调用执行的函数,就相当于是线程处理函数。

接着,在 main 函数里面,我们创建了两个自定义线程,并分别使用 start 函数启动该两个线程。

Python threading多线程教程总结

在 Python 中,使用 threading 模块创建多线程有两种方式,即直接使用线程处理函数创建与继承 threading.Thread 类实现多线程。

使用线程处理函数创建多线程的用法类似于 thread 模块创建多线程,而使用继承 threading.Thread 类实现多线程的本质就是重写其中的 run 方法。

嗨客网顶部