欢迎访问宙启技术站
智能推送

深入理解Python中的run()方法的执行过程

发布时间:2023-12-31 22:46:36

在Python中,run()方法是多线程编程中常用的方法,用于执行一个线程的任务。run()方法在Thread类中定义,用于定义线程要执行的代码。在执行run()方法时,会创建一个新的线程去执行其中的代码。

下面是一个使用run()方法的示例:

import threading

class MyThread(threading.Thread):
    def __init__(self, name):
        threading.Thread.__init__(self)
        self.name = name
        
    def run(self):
        print('Thread', self.name, 'is running')

# 创建线程对象
thread1 = MyThread('Thread 1')
thread2 = MyThread('Thread 2')

# 执行线程任务
thread1.run()
thread2.run()

在上述示例中,我们定义了一个继承自Thread类的MyThread类。我们在MyThread类中重写了run()方法,并在其中定义了线程要执行的任务。在run()方法中,我们简单地打印了当前线程的名称。

在主程序中,我们创建了两个线程对象thread1和thread2,并分别调用它们的run()方法来执行线程任务。由于run()方法是普通的方法调用,而不是使用start()方法启动线程,所以这两个线程任务是在主线程中依次执行的。

输出结果为:

Thread Thread 1 is running
Thread Thread 2 is running

从输出结果可以看出,线程任务在主线程中依次执行,并打印出线程的名称。

需要注意的是,使用run()方法执行任务并不会创建新的线程,而是在当前线程中直接执行任务。所以在上述示例中,线程任务是在主线程中顺序执行的。

如果我们希望创建新的线程并执行任务,应该使用start()方法来启动线程。start()方法会在新的线程中执行run()方法的代码。

下面是一个使用start()方法的示例:

import threading

class MyThread(threading.Thread):
    def __init__(self, name):
        threading.Thread.__init__(self)
        self.name = name
        
    def run(self):
        print('Thread', self.name, 'is running')

# 创建线程对象
thread1 = MyThread('Thread 1')
thread2 = MyThread('Thread 2')

# 启动线程
thread1.start()
thread2.start()

在上述示例中,我们调用了thread1和thread2的start()方法来启动线程。start()方法会创建一个新的线程,并在新的线程中执行run()方法的代码。

输出结果为:

Thread Thread 1 is running
Thread Thread 2 is running

从输出结果可以看出,线程任务是在两个独立的线程中并发执行的。

总结起来,run()方法是用来定义线程任务的,在执行run()方法时会创建一个新的线程去执行其中的代码。使用run()方法执行任务会在当前线程中执行,而使用start()方法启动线程会在新的线程中执行。