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

Python的 __pycache__ 文件夹

用python编写好一个工程,在第一次运行后,总会发现工程根目录下生成了一个__pycache__文件夹,里面是和py文件同名的各种 *.pyc 或者 *.pyo 文件

python基本运行机制

Python程序运行时不需要编译成二进制代码,而直接从源码运行程序,简单来说是,Python解释器将源码转换为字节码,然后再由解释器来执行这些字节码。

解释器的具体工作

1 完成模块的加载和链接;

2 将源代码编译为PyCodeObject对象(即字节码),写入内存中,供CPU读取;

3 从内存中读取并执行,结束后将PyCodeObject写回硬盘当中,也就是复制到.pyc或.pyo文件中,以保存当前目录下所有脚本的字节码文件;

* 之后若再次执行该脚本,它先检查【本地是否有上述字节码文件】和【该字节码文件的修改时间是否与其脚本一致】。是就直接执行,否则重复上述步骤。

为什么会出现__PYCACHE__文件夹?

python解释器会将 *.py 脚本文件进行编译,并将编译结果即生成的字节码文件保存到__pycache__目录中。

下次再执行工程时,若解释器发现这个 *.py 脚本没有修改过,就会跳过编译这一步,直接运行以前生成的保存在 __pycache__文件夹里的 *.pyc 文件。

这样工程较大时就可以大大缩短项目运行前的准备时间;如果你只需执行一个小工程,没关系 忽略这个文件夹就行。

当然也可以删除

什么时候会出现__PYCACHE__文件夹?

工程目录下有__main__.py文件,并且有其他将要调用的模块时

如果只有当前运行的脚本 "__main__",则不会生成 __pycache__ 的文件。

如何使__PYCACHE__文件夹不出现?

单次: 运行脚本时添加 -B 参数

python -B foo.py

相关文章:

  • Vue.js
  • JVM虚拟机
  • MyOS(一):用Java做一个最小的helloworld操作系统内核
  • Windows下Vim
  • 汇编语言
  • SVN服务器端
  • Mavic Mini
  • Chrome浏览器
  • SVN客户端
  • Windows批处理文件bat/cmd
  • IDEA 操作快捷键
  • Python迭代器 iterator(iter next) 生成器 generator(yield) yield
  • Python协程(generator, yield, send)
  • 虚拟机 虚拟硬盘
  • 8086处理器 硬盘
  • @jsonView过滤属性
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【刷算法】求1+2+3+...+n
  • create-react-app项目添加less配置
  • Elasticsearch 参考指南(升级前重新索引)
  • Java 最常见的 200+ 面试题:面试必备
  • learning koa2.x
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Quartz初级教程
  • SpiderData 2019年2月25日 DApp数据排行榜
  • springMvc学习笔记(2)
  • Vue 动态创建 component
  • yii2权限控制rbac之rule详细讲解
  • 创建一种深思熟虑的文化
  • 构建工具 - 收藏集 - 掘金
  • 基于axios的vue插件,让http请求更简单
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 三栏布局总结
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 新书推荐|Windows黑客编程技术详解
  • 因为阿里,他们成了“杭漂”
  • AI算硅基生命吗,为什么?
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (003)SlickEdit Unity的补全
  • (C#)一个最简单的链表类
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (黑马C++)L06 重载与继承
  • (全注解开发)学习Spring-MVC的第三天
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • **python多态
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福