NameError:名称“threading”未在 Python 中定义

NameError: 名称 ‘threading’ 未在 Python 中定义

NameError: name ‘threading’ is not defined in Python

Python“NameError: name ‘threading’ is not defined”发生在我们使用
threading模块而不先导入它时。要解决错误,请
threading在使用之前导入模块 – import threading

nameerror 名称线程未定义

下面是错误如何发生的示例。

主程序
import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # ⛔️ NameError: name 'threading' is not defined threading.Thread(target=worker, daemon=True).start() for item in range(15): q.put(item) q.join() print('All work completed')

为了解决这个错误,我们必须导入
线程模块。

主程序
# ✅ import threading module first import threading import queue q = queue.Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() threading.Thread(target=worker, daemon=True).start() for item in range(15): q.put(item) q.join() print('All work completed')

即使该threading模块在 Python 标准库中,我们仍然需要在使用前导入它。

t确保在导入时没有使用大写字母,因为模块名称区分大小写。 threading

另外,请确保您没有导入threading嵌套范围,例如函数。在顶层导入模块,以便能够在整个代码中使用它。

导入整个threading模块的替代方法是仅导入您的代码使用的函数和类。

主程序
# 👇️ import only Thread class from threading import Thread from queue import Queue q = Queue() def worker(): while True: item = q.get() print(f'Working on {item}') print(f'Finished {item}') q.task_done() # 👇️ accessing Thread class directly Thread(target=worker, daemon=True).start() for item in range(15): q.put(item) q.join() print('All work completed')

该示例显示了如何从模块导入Thread类。threading

例如threading.Thread,我们现在直接访问它们,而不是访问模块上的成员。

这应该是您的首选方法,因为它使您的代码更易于阅读。

例如,当我们使用诸如 之类的导入时import threading,很难看出文件中使用了模块中的哪些类或函数。 threading

相反,当我们导入特定的类时,更容易看出threading正在使用模块中的哪些类和方法。

您可以通过访问官方文档threading查看该模块提供的所有类和方法

结论

Python“NameError: name ‘threading’ is not defined”发生在我们使用
threading模块而不先导入它时。要解决错误,请
threading在使用之前导入模块 – import threading