当前位置: 首页 > news >正文

Python中的 __name__

Python中的 __name__

  • __name__ 是Python中每个模块(.py文件)都会自动拥有的一个内置变量。
  • 它表示当前模块的名字。

关键点:

  • 当你直接运行一个Python脚本,比如:
python train.py

此时,train.py文件里的 __name__ 的值是:

__name__ == '__main__'
  • 但是当这个文件被 别的Python脚本导入 时,比如:
import train

此时,train.py 文件里的 __name__ 就是模块名:

__name__ == 'train'

为什么要写

if __name__ == '__main__':# 只有在直接运行这个脚本时,才会执行这里的代码

这个判断是为了:

  • 保证只有直接运行这个脚本时,才执行if语句里的代码
  • 当这个脚本被别人导入时,if块里面的代码不会自动运行

在多进程/多线程里为什么重要?

Windows下的多进程启动机制,会重新导入当前启动脚本,如果没有这个判断,就会导致递归地反复运行整个脚本,导致错误。


总结

  • __name__ == '__main__' 这句话就是告诉Python:“如果你是直接执行这个文件,就运行下面的代码。”
  • 这也是Python程序的入口习惯写法。

你可以试试在train.py里加上:

from ultralytics import YOLOif __name__ == '__main__':model = YOLO('yolov8n.pt')model.train(data='weed.yaml', workers=1, epochs=5, imgsz=640, batch=16)

然后再运行,应该就不会报那个多进程错误了。需要我帮你写完整示例吗?

http://www.dtcms.com/a/324329.html

相关文章:

  • 遇到前端导出 Excel 文件出现乱码或文件损坏的问题
  • 异或循环冗余
  • Python设计模式 - 装饰模式
  • 新手向:Python实现文件加密解密工具
  • 旅行者1号无线电工作频段
  • 18.3 全量微调:数据预处理之清洗与准备
  • 机器学习——DBSCAN 聚类算法 + 标准化
  • 实现两个开发板的串口通讯(基于STC8实现)
  • 复刻苏宁易购(移动端)
  • 【GPT入门】第44课 检查 LlamaFactory微调Llama3的效果
  • cursor, vscode黄色波浪线警告问题
  • React:useEffect 与副作用
  • 小巧实用的工具——ZoomIt
  • 【C++对象诞生全解析】构造函数:从内存布局到高效初始化的终极指南
  • 152-基于CWT-CNN-BiGRU-Attention-SABO-LSSVM对滚动轴承的故障诊断
  • spring-boot-starter-data-redis 与 org.redisson 区别 联系
  • 【递归、搜索与回溯算法】深度优先搜索
  • Text2SQL 自助式数据报表开发(Chat BI)
  • 《解锁 C++ 起源与核心:命名空间用法 + 版本演进全知道》
  • Spring Boot 注解详解:@RequestMapping 的多种用法
  • Docker 跨主机容器之间的通信macvlan
  • 攻击实验(ARP欺骗、MAC洪范、TCP SYN Flood攻击、DHCP欺骗、DHCP饿死)
  • Spring Boot与WebSocket构建物联网实时通信系统
  • LeetCode 子集
  • Java基础-Map接口
  • 香橙派 RK3588 部署 DeepSeek
  • SQL约束:数据完整性的守护者
  • Linux中rsync数据镜像工具的解析与应用实战
  • 如何在 Ubuntu 24.04 LTS Linux 上安装 MySQL 服务器
  • JavaScript防抖与节流:拯救你的网页卡顿危机!