我对这些方法的理解是:
__init__()
就像构造函数。run()
。但为什么我们需要一个run方法呢?我们是否可以实例化该类的对象,并且所有初始化都保留在__init__()
?
我经历过this article,无法从中获益 你能否就此分享一些见解?
答案 0 :(得分:1)
我认为Python线程模块提供了一个很好的例子。如果你有一个派生的线程类总是运行相同的函数,但也许你想给它不同的输入怎么办?您可能希望实例化该类的许多对象但具有不同的输入 - 并且您不希望它开始运行。
也许您希望将这个实例化(但未启动)的线程列表传递给某种类型的管理器,无论它们是什么类型的线程,它都会启动并监视它们。
在这种情况下,最好将创建与运行分开。
答案 1 :(得分:1)
__init__
运行一次(构造对象时),而run
(在您给出的示例中)在后台运行(另一个进程),只要该对象存在。
__init__
和run
之间的唯一区别是第一个在主线程中运行,而第二个在另一个线程中运行。
但为什么我们需要一个run方法呢?我们可能已经实现了一个类的对象,并且所有初始化都保留在_init__中?
事实上,所有inializations已经在__init __。该示例中的run
方法只演示了一个后台线程,并不是必需的。
答案 2 :(得分:0)
关于__init__()
是构造函数,你是对的。在此示例中,目标是在线程中运行函数run()
。该示例提供了一种干净的方法。您无法在run()
内的__init__()
函数内运行代码,因为这不会产生新的线程。
考虑这个案例:
example = ThreadingExample()
do_something_important_that_doesnt_want_to_wait()
这适用于示例代码。