一文掌握Python中实现多线程


Python中实现多线程的方法有以下几种:

  • 使用thread模块中的start_new_thread()函数,传入一个可调用对象(函数或类的实例方法)作为参数,创建一个新的线程。这种方法简单易用,但是需要手动管理线程的生命周期和同步。
  • 使用threading模块中的Thread类,创建一个子类并继承Thread类,重写__init__()和run()方法,传入一个可调用对象(函数或类的实例方法)作为参数,创建一个新的线程。这种方法可以自定义线程的行为和属性,但是需要注意线程之间的通信和同步。
  • 使用threading模块中的Queue类,创建一个队列对象,并将需要执行的任务放入队列中,然后在主线程中从队列中取出任务并执行。这种方法可以实现任务之间的异步执行和通信,但是需要注意队列的容量和性能。

下面是一个使用threading模块中Thread类实现多线程的示例代码:

# 导入threading模块
import threading

# 定义一个计数器类
class Counter(threading.Thread):
    # 初始化方法
    def __init__(self, name, count):
        # 调用父类构造方法
        threading.Thread.__init__(self)
        # 设置线程名
        self.name = name
        # 设置计数器值
        self.count = count
    
    # 定义run方法
    def run(self):
        # 打印线程名和计数器值
        print(f"{self.name} is running. Count = {self.count}")
        # 递增计数器值
        self.count += 1
    
    # 定义increment方法,用于增加计数器值
    def increment(self):
        self.count += 1

# 创建两个计数器对象,并指定不同的名字和初始值
counter1 = Counter("Counter1", 0)
counter2 = Counter("Counter2", 0)

# 创建两个线程对象,并传入计数器对象作为参数
thread1 = threading.Thread(target=counter1.increment)
thread2 = threading.Thread(target=counter2.increment)

# 启动两个线程运行
thread1.start()
thread2.start()

# 等待两个线程结束运行,并打印最终结果
thread1.join()
thread2.join()
print(f"Counter1 is done. Count = {counter1.count}")
print(f"Counter2 is done. Count = {counter2.count}")

运行结果如下:

Counter1 is running. Count = 0
Counter2 is running. Count = 0
Counter1 is running. Count = 1
Counter2 is running. Count = 1
Counter1 is done. Count = 2
Counter2 is done. Count = 3

从结果可以看出,两个计数器对象在不同的线程中并发地增加了自己的计数值,并且最终都完成了任务。

原文链接:,转发请注明来源!