当前位置: 首页 > 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.zskr.cn/news/71549.html

相关文章:

  • 上考教育的系统化服务直击考生痛点
  • 必玩十大网上【小程序休闲游戏】单人易操作不占内存 摸鱼解压全靠它!
  • 博文推荐——
  • 2025 公考备考选对路!上考教育十年深耕,个性化方案 + 全程督学助力高效上岸
  • 十大爆款小程序休闲游戏:易上手不占空间,摸鱼解压打发时间好伙伴
  • 北京 KET/PET 辅导机构口碑排行榜(2026实测版)​
  • 2025年12月小程序开发公司推荐,覆盖微信/定制/多行业的高口碑企业榜单
  • 2025 最新离心机源头厂家推荐榜:权威测评精选实力品牌,采购选型全攻略碟式离心机/卧螺离心机公司推荐
  • Nexpose 8.31.0 for Linux Windows - 漏洞扫描
  • Redis性能优化避坑指南 - 详解
  • 2025年12月江苏排水沟、排水槽、U型槽、盖板制造厂家排行榜前十推荐
  • 【EAI、JPCS出版 | EI检索 | 征稿主题广】第四届智慧能源与电气工程国际学术会议(SEEE 2025)
  • 【IEEE出版 | EI检索 | 往届检索良好】第六届机械自动化与智能制造国际学术会议(MAIM 2025)
  • 2025年灌浆料厂家推荐榜:无收缩/高强无收缩/水泥基/自流平/支座/灌浆料/试块,耐牛以质筑基,守护建筑安全
  • 植物大战僵尸杂交版下载安装教程(PC/安卓/iOS 全平台详解 常见问题解决)
  • 2025年12月新沂排水沟、排水槽、U型槽、盖板厂家top5 推荐榜单
  • 绕过技术-IDS和IPS绕过
  • 绕过技术-UAC用户账户控制绕过
  • 2025聚焦西班牙 EOR 服务商:Safeguard Global名义雇主合规雇佣降低出海风险
  • 2025年缓冲托辊定制厂家权威推荐榜单:聚氨酯缓冲托辊‌/平行缓冲托辊‌/缓冲托辊胶圈‌源头厂家精选
  • Linux系统虚拟内存扩容:Swap文件
  • 博士中介性价比榜TOP10!全奖稳冲的秘诀
  • 2025年12月安徽农药、杀虫剂、水稻除草套餐、药肥颗粒、除草剂厂家测评
  • 名义雇主 EOR 公司怎么选?2025出海企业必看指南,推荐Safeguard Global人力资源服务商
  • 博士留学中介百分制排名TOP10!服务细节才是核心加分项
  • 中介TOP10深扒:美国申请性价比专业性实测
  • 博士留学机构排名十大推荐,专属咨询破解申请瓶颈
  • MATLAB实现的光纤通信系统中的相干系统仿真
  • linux 批量停止进程
  • 大模型工具调用的另类用法——结构化json输出