python多线程执行函数实现方法

  • Post category:Python

Python提供了多线程的支持,可以帮助程序利用多核CPU资源,更好地并发处理任务。Python多线程的实现方式有两种:函数式和面向对象式。

函数式实现多线程

函数式实现多线程是利用Python内置的threading模块来创建线程。该模块提供了Thread类来创建线程,创建线程的方式有两种:

  1. 将函数名作为Thread类的参数传入,使用start方法启动线程;
  2. 创建一个自定义的线程类,继承Thread类,重写run方法。
import threading
import time

def foo(name):
    print('Starting', name)
    time.sleep(3)
    print('Exiting', name)

if __name__ == '__main__':
    t1 = threading.Thread(target=foo, args=('Thread 1', ))
    t2 = threading.Thread(target=foo, args=('Thread 2', ))
    t1.start()
    t2.start()

代码解析:

  1. 首先导入threading模块和time模块;
  2. 定义了一个函数foo,接收一个参数name,打印该线程开始运行的信息,然后休眠3秒,最后打印该线程结束运行的信息;
  3. 在主程序中创建了两个线程t1t2,分别执行foo函数;
  4. 通过调用start方法来启动线程。

面向对象实现多线程

面向对象实现多线程也是利用threading模块来创建线程,通过继承Thread类,重写run方法来实现自定义线程类。

import threading
import time

class MyThread(threading.Thread):
    def __init__(self, name):
        super().__init__(name = name)

    def run(self):
        print('Starting', self.name)
        time.sleep(3)
        print('Exiting', self.name)

if __name__ == '__main__':
    t1 = MyThread('Thread 1')
    t2 = MyThread('Thread 2')
    t1.start()
    t2.start()

代码解析:

  1. 定义了自定义的线程类MyThread,继承了Thread类,重写了run方法;
  2. MyThread类的构造函数中调用了父类的构造函数,并传入了线程的名称;
  3. run方法中打印该线程开始运行的信息,然后休眠3秒(模拟线程执行任务的过程),最后打印该线程结束运行的信息;
  4. 在主程序中创建了两个自定义的线程t1t2,并启动。

以上就是Python多线程执行函数实现的攻略和演示示例。需要注意的是,在多线程编程中要注意线程安全,避免多个线程同时访问共享数据引起的数据竞争问题。