Python提供了多线程的支持,可以帮助程序利用多核CPU资源,更好地并发处理任务。Python多线程的实现方式有两种:函数式和面向对象式。
函数式实现多线程
函数式实现多线程是利用Python内置的threading
模块来创建线程。该模块提供了Thread
类来创建线程,创建线程的方式有两种:
- 将函数名作为
Thread
类的参数传入,使用start
方法启动线程; - 创建一个自定义的线程类,继承
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()
代码解析:
- 首先导入
threading
模块和time
模块; - 定义了一个函数
foo
,接收一个参数name
,打印该线程开始运行的信息,然后休眠3秒,最后打印该线程结束运行的信息; - 在主程序中创建了两个线程
t1
和t2
,分别执行foo
函数; - 通过调用
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()
代码解析:
- 定义了自定义的线程类
MyThread
,继承了Thread
类,重写了run
方法; MyThread
类的构造函数中调用了父类的构造函数,并传入了线程的名称;- 在
run
方法中打印该线程开始运行的信息,然后休眠3秒(模拟线程执行任务的过程),最后打印该线程结束运行的信息; - 在主程序中创建了两个自定义的线程
t1
和t2
,并启动。
以上就是Python多线程执行函数实现的攻略和演示示例。需要注意的是,在多线程编程中要注意线程安全,避免多个线程同时访问共享数据引起的数据竞争问题。