文章标题:Python多线程编程(二):启动线程的两种方法
前言
编写多线程程序可以在某种程度上提高程序的并发性和性能,Python提供了多种方式支持多线程编程。本文将着重讲解启动线程的两种方法:继承threading.Thread类和使用函数式API:threading.Thread。
使用继承方式实现启动线程
创建线程方式中,最常见的方法就是继承Thread类。示例如下:
import threading
import time
class MyThread(threading.Thread):
def __init__(self, name, delay):
threading.Thread.__init__(self)
self.name = name
self.delay = delay
def run(self):
print("Starting " + self.name)
time.sleep(self.delay)
print("Exiting " + self.name)
if __name__ == '__main__':
thread1 = MyThread("Thread-1", 2)
thread2 = MyThread("Thread-2", 4)
thread3 = MyThread("Thread-3", 6)
thread1.start()
thread2.start()
thread3.start()
thread1.join()
thread2.join()
thread3.join()
在创建一个线程时,必须实现__init__()
和run()
方法。run()
方法实现线程的功能。调用start()
方法可以启动线程。
其输出结果为:
Starting Thread-1
Starting Thread-2
Starting Thread-3
Exiting Thread-1
Exiting Thread-2
Exiting Thread-3
使用函数式API实现启动线程
Python还支持使用函数式API来启动线程。示例如下:
import threading
import time
def worker(delay):
print(threading.current_thread().getName() + " Starting ")
time.sleep(delay)
print(threading.current_thread().getName() + " Exiting ")
if __name__ == '__main__':
thread1 = threading.Thread(target=worker, args=[2])
thread2 = threading.Thread(target=worker, args=[4])
thread3 = threading.Thread(target=worker, args=[6])
thread1.start()
thread2.start()
thread3.start()
thread1.join()
thread2.join()
thread3.join()
在创建一个线程时,必须实现该方法。该方法可以是函数,也可以是类的方法。调用start()
方法可以启动线程。
其输出结果为:
Thread-1 Starting
Thread-2 Starting
Thread-3 Starting
Thread-1 Exiting
Thread-2 Exiting
Thread-3 Exiting
结语
本文分别阐述了Python多线程编程中启动线程的两种方式:继承Thread类和使用函数式API实现启动线程。在实际应用中,选用合适的创建线程方法,能够更好的提高程序的性能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python多线程编程(二):启动线程的两种方法 - Python技术站