Python程序即将获得更快的启动速度,这要归功于PEP 810"显式延迟导入"提案,该功能允许脚本推迟加载导入的库,直到实际需要时才加载,而不是在启动时就加载。
这项Python增强提案由指导委员会成员Pablo Salgado于10月3日提出,并于11月3日获得批准。该增强功能将把延迟导入直接集成到Python语言中,作为一个可选功能。
在Python中导入模块既是优势也是痛点。优势在于几个导入语句就能极大扩展程序功能,但痛点是导入的符号可能永远不会被使用,这可能会增加启动时间。一个典型例子是从命令行调用程序时使用--help参数,却不得不等待加载那些并不需要的导入模块。
作为解决方案,延迟导入将事情推迟到实际需要时才执行。
这个想法并不新鲜(令人惊讶的是标准实现竟然花了这么长时间)。虽然有多种方法可以实现延迟导入,但Python语言本身并没有内置这个功能。
这并非全新概念,但之前的尝试都失败了。PEP 690被拒绝,部分原因是它将延迟导入设为默认选项,引发了对社区分裂和向后兼容性的担忧。与此同时,开发者创建了自己的解决方案,一些组织甚至分叉了CPython。
PEP 810通过将延迟导入设为可选功能而获得成功,在保持向后兼容性的同时,标准化了目前分散的自定义解决方案格局。
该提案引起了超过450条评论,包括关于"defer"(推迟)是否比"lazy"(延迟)听起来更专业的争论。
Python指导委员会代表Barry Warsaw发布评论:"感谢你们在这方面的工作,这是Python社区期待已久的功能。考虑到早期的尝试和现有的解决方案,我们认为这达到了完美的平衡。"
虽然开发者还需要等待一段时间才能享受到PEP 810的成果,但对于许多因漫长加载时间而沮丧的Python用户来说,Python本身能够解决这个问题的功能来得再及时不过了。
Q&A
Q1:PEP 810延迟导入功能是什么?
A:PEP 810是Python的"显式延迟导入"增强提案,允许程序推迟加载导入的库,直到实际需要时才加载,而不是在程序启动时就加载所有导入模块,从而显著提升Python程序的启动速度。
Q2:为什么之前的延迟导入方案没有成功?
A:之前的PEP 690提案被拒绝,主要是因为它将延迟导入设为默认选项,引发了社区对兼容性问题和社区分裂的担忧。而PEP 810成功的关键在于将延迟导入设为可选功能,保持了向后兼容性。
Q3:PEP 810延迟导入能解决什么实际问题?
A:主要解决Python程序启动时间过长的问题。比如当你在命令行使用--help参数时,程序需要加载很多实际用不到的导入模块,延迟导入可以避免这种不必要的等待时间,只在真正需要时才加载相应模块。
好文章,需要你的鼓励
英国宠物慈善机构PDSA数据显示,超过半数宠物主担心无法承担兽医费用。科技公司正通过AI和物联网技术解决这一市场需求。在伦敦兽医展上,多家初创公司展示了创新技术:AI for Pet利用视觉AI分析宠物眼部、皮肤等图像提供健康洞察;Sylvester.ai开发AI模型识别猫咪疼痛表情;VEA整合患者数据自动化诊断。此外,智能项圈等物联网设备可追踪宠物健康症状。这些技术有助于宠物主采取预防措施,降低兽医费用。
卡内基梅隆大学联合Adobe开发出革命性的NP-Edit技术,首次实现无需训练数据对的AI图像编辑。该技术通过视觉语言模型的语言反馈指导和分布匹配蒸馏的质量保障,让AI仅用4步就能完成传统50步的编辑任务,在保持高质量的同时大幅提升处理速度,为图像编辑技术的普及应用开辟了全新道路。
北欧国家启动统一人工智能产业计划,旨在通过合作在全球舞台上竞争,获得微软和谷歌支持。10月成立的新北欧AI中心获得350万英镑初始预算,但谷歌和微软是唯一提供资金支持的科技公司,具体金额保密。该中心将开发生成式AI系统并建设应用AI服务的系统。北欧教育部长承诺追加资金开发大型北欧语言生成AI模型。尽管资金有限,但北欧国家希望通过联合力量在AI竞赛中提升地位。
复旦大学团队突破AI人脸生成"复制粘贴"痛点,开发WithAnyone模型解决传统AI要么完全复制参考图像、要么身份差异过大的问题。通过MultiID-2M大规模数据集和创新训练策略,实现保持身份一致性的同时允许自然变化,为AI图像生成技术树立新标杆。