Python创建线程

2025-05-26 04:35:11

1、Python 提供了 _thread 和 threading 两个模块来支持多线程,其中 _thread 提供低级别的、原始的线程支持,以及一个简单的锁,正如它的名字所暗示的,一般编程不建议使用 thread 模块;而 threading 模块则提供了功能丰富的多线程支持。Python 主要通过两种方式来创建线程:使用 threading 模块的 Thread 类的构造器创建线程。继承 threading 模块的 Thread 类创建线程类。调用 Thread 类的构造器创建线程调用 Thread 类的构造器创建线程很简单,直接调用 threading.Thread 类的如下构造器创建线程:

Python创建线程

2、上面的构造器涉及如下几稍僚敉视个参数:group:指定该线程所属的线程组。目前该参数还未实现,因此它只能设为 None。target:指定该线程要调度的目标方法。args:指定一个元组,以位就女蒿鸳置参数的形式为 target 指定的函数传入参数。元组的第一个元素传给 target 函数的第一个参数,元组的第二个元素传给 target 函数的第二个参数……依此类推。kwargs:指定一个字典,以关键字参数的形式为 target 指定的函数传入参数。daemon:指定所构建的线程是否为后代线程。通过 Thread 类的构造器创建井启动多线程的步骤如下:调用 Thread 类的构造器创建线程对象。在创建线程对象时,target 参数指定的函数将作为线程执行体。调用线程对象的 start() 方法启动该线程。下面程序示范了通过 Thread 类的构造器来创建线程对象:

Python创建线程

3、上面程序中的主程序包含一个循环,当循环变量 i 等于 20 时创建并启动两个新线程:创建了一个 Thread 对象,该线程的 target 为 action,这意味着它会将 action 函数作为线程执行体。接下来程序调用 start() 方法来启动t1线程。再次创建了一个线程,其创建和启动方式与第一个线程完全相同。运行上面程序,将会看到如图所示的界面。

Python创建线程

4、虽然上面程序只显式创建并启动了两个线程,但实际上程序有三个线程,即程序显式创建的两个子线程和主线程。前面己经提到,当 Python 程序开始运行后,程序至少会创建一个主线程,膈套甘勰主线程的线程执行体就是程序中的主程序(没有放在任何函数中的代码)。从上图可以看出,此时程序中共包含三个线程,这三个线程的执行没有先后顺序,它们以并发方式执行:Thread-1 执行一段时间,然后可能 Thread-2 或 MainThread 获得 CPU 执行一段时间,接下来又换其他线程执行,这就是典型的线程并发执行,CPU 以快速轮换的方式在多个线程之间切换,从而给用户一种错觉,即多个线程似乎同时在执行。通过上面介绍不难看出多线程的意义,如果不使用多线程,主程序直接调用两次 action() 函数,那么程序必须等第一次调用的 action() 函数执行完成,才会执行第二次调用的 action() 函数;必须等第二次调用的 action() 函数执行完成,才会继续向下执行主程序。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢