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

【python语法】python里很抽象的否定运算符not

示例

tta_dataloader = dataloader.DataLoader(
tta_data, batch_size=1, shuffle=True, # shuffle=True,
pin_memory=not args.cpu, num_workers=args.n_threads)
关于这里的pin_memory=not args.cpu

解释

  • 表达式含义

    • not 是 Python 的布尔否定运算符。not args.cpu 的结果是布尔值:当 args.cpu 为 True 时结果为 False,反之当 args.cpu 为 False 时结果为 True。
    • 因为在程序中 args.cpu 是由 argparseaction='store_true' 定义的布尔开关(传入 --cpu 时为 True,默认为 False),所以 not args.cpu 的直观含义是“不是 CPU 模式” → 即“使用 GPU 时为 True,使用 CPU 时为 False”。
  • 在 DataLoader 参数中的作用

    • pin_memory 是 PyTorch DataLoader 的一个参数,接受布尔值。pin_memory=True 会让 DataLoader 在返回 batch 前把张量放到“页锁定内存(pinned / page-locked memory)”区域,这样把数据从主内存传输到 GPU(CUDA)时通常更快。
    • 因此 pin_memory=not args.cpu 的目的就是:当程序不在 CPU 模式时(即计划使用 GPU)启用页锁定内存;如果强制只用 CPU,则关闭 pin_memory
  • 举例(结果)

    • 若命令行带 --cpuargs.cpu == Truenot args.cpu == Falsepin_memory=False
    • 若不带 --cpuargs.cpu == Falsenot args.cpu == Truepin_memory=True
  • 等价的显式写法

    if args.cpu:pin = False
    else:pin = True
    tta_dataloader = DataLoader(..., pin_memory=pin)
    

    或更简洁:

    pin_memory = not args.cpu
    
  • 额外建议(更稳健)

    • 有时你还想确认 CUDA 是否可用再启用 pin memory:
      pin_memory = (not args.cpu) and torch.cuda.is_available()
      
    • args.cpu 不是布尔(极少见),not 会把任意“真值/假值”转换为布尔;不过这里 args.cpu 应当是布尔,可放心使用。

总结:pin_memory=not args.cpu 用来根据命令行开关自动启用/禁用 DataLoader 的页锁定内存 —— 在使用 GPU 时启用(加速主存→GPU 传输),在仅用 CPU 时禁用。

http://www.jsqmd.com/news/60990/

相关文章:

  • 【2025最新】TranslucentTB下载安装及使用教程:任务栏透明神器全面解析(详细步骤 + 常见问题)
  • 【Flutter x 鸿蒙】第一篇:环境搭建与第一个鸿蒙Flutter应用运行 - 青青子衿-
  • 上考教育的系统化服务直击考生痛点
  • 2025 年西安搬家公司最新推荐榜,聚焦搬家服务技术实力与市场口碑深度解析西安长途搬家 / 西安居民搬家 / 西安日式搬家 / 西安空调拆装服务公司推荐
  • 2025年上海圆锯机企业年度排名:宏萌圆锯机的配件质量好
  • 鸿蒙开发之路:内存优化实战——泄漏检测、大对象管理与垃圾回收策略 - 青青子衿-
  • 2025年中国十大专业版权音乐企业推荐:服务不错的版权音乐公
  • 2025 年 12 月文创/非遗/艺术品推荐榜单:匠心独运的文化瑰宝与艺术精品深度解析
  • 2025 年 12 月红木办公家具权威推荐榜单:精选红木办公桌/老板桌/大班台,办公椅,书桌椅,书房套装,文件柜品牌!
  • 必玩十大网上【小程序休闲游戏】单人易操作不占内存 摸鱼解压全靠它!
  • 2025年健康监测,健康监测设备,居家健康监测平台最新推荐:设备监测精度与居家场景适配实测解析
  • 2025年老年健康监测,健康监测设备,健康监测平台最新推荐:老年监测适配性与设备专业性深度分析
  • 2025 公职备考攻略:上考教育十年深耕,个性化方案 + 全程督学太省心​
  • 博文推荐——
  • 2025 公考备考选对路!上考教育十年深耕,个性化方案 + 全程督学助力高效上岸
  • 【Flutter x 鸿蒙】第二篇:理解Flutter on HarmonyOS的架构设计 - 青青子衿-
  • 聚宽策略想实盘?这个开源项目让你一行代码不改直接跑
  • 2025年泉州蹲便疏通打孔公司权威推荐榜单:疏通蹲便‌/蹲便器疏通‌/蹲便疏通口‌源头公司精选
  • 十大爆款小程序休闲游戏:易上手不占空间,摸鱼解压打发时间好伙伴
  • IDEA(2020版)实现JSP基本语法
  • 2025 年 12 月码垛机厂家权威推荐榜单:多样板材/倒板/分拣/上料/下料码垛机,全自动与半自动解决方案精选!
  • 2025年AI培训权威推荐榜:深度评测与趋势前瞻
  • 备考必看!2025年12月五大雅思培训机构选择全指南
  • 【Flutter x 鸿蒙】第三篇:鸿蒙特色UI组件与Flutter的融合使用 - 青青子衿-
  • 2025年12月不锈钢橱柜选购宝典:五大零甲醛品牌深度解析,告别甲醛困扰!
  • ESD管在新兴领域的创新应用:从5G毫米波到智能穿戴的技术突破-ASIM阿赛姆
  • 2025 年 12 月红木家具权威推荐榜单:从床到茶桌,匠心工艺与经典设计的完美结合!
  • 【python】corruptions = util.get_corruptions()[1:]
  • 北京 KET/PET 辅导机构口碑排行榜(2026实测版)​
  • 【TET出版 | EI检索 | 多届历史快速稳定检索】第十届清洁能源与发电技术国际学术会议(CEPGT 2025)