下面代码摘自web.py框架
selfimport sys import os class Reloader: if sys.platform.startswith('java'): SUFFIX = '$py.class' else: SUFFIX = '.pyc' def __init__(self): self.mtimes = {} def __call__(self): import pdb pdb.set_trace() for mod in sys.modules.values(): self.check(mod) def check(self, mod): if not (mod and hasattr(mod, '__file__') and mod.__file__): return try: mtime = os.stat(mod.__file__).st_mtime except (OSError, IOError): return if mod.__file__.endswith(self.__class__.SUFFIX) and os.path.exist(mod.__file__[:-1]): mtime = max(os.stat(mod.__file__[:-1].st_mtime), mtime) if mod not in self.mtimes: self.mtimes[mod] = mtime elif self.mtimes[mod] < mtime: try: reload(mod) self.mtimes[mod] = mtime except ImportError: pass reloader = Reloader() reloader()
第一个知识点:
self.__class__.SUFFIX,首先python一切皆对象,类实际上在python的世界里面也是一个对象,__class__至少在下面这种情况中是有用的:当一个类中的某个成员变量是所有该类的对象的公共变量时.
很像java中的static变量。
第二个知识点:
__import__与reload的区别:
(1):多次重复使用import语句时,不会重新加载被指定的模块,只是把对该模块的内存地址给引用到本地变量环境。
(2)对已经加载的模块进行重新加载,一般用于原模块有变化等特殊情况,reload前该模块必须已经import过。reload会重新加载已加载的模块,但原来已经使用的实例还是会使用旧的模块,而新生产的实例会使用新的模块;reload后还是用原来的内存地址;不能支持from。。import。。格式的模块进行重新加载。
(3)通常在动态加载时可以使用到这个函数,比如你希望加载某个文件夹下的所用模块,但是其下的模块名称又会经常变化时,就可以使用这个函数动态加载所有模块了,最常见的场景就是插件功能的支持。比如__import__可以这样__import__('os',globals(),locals(),['path','pip']) ,reload就不行了。
具体可以参考看看这篇文章http://www.cnblogs.com/MaggieXiang/archive/2013/06/05/3118156.html
第三个知识点:
__call__的用法,可调用对象,这个确实是第一次接触到,大概的用法就是我们只需要去重载这个方法,那么我们就可以像调用方法的形式去调用对象,那么它就会去回调这个__call__方法,具体的好处可以参看这个博客
相关推荐
Python-GPUtil是一个强大的Python模块,它允许程序员通过NVIDIA的`nvidia-smi`工具以编程的方式获取NVIDIA GPU的状态信息。在GPU计算日益重要的今天,对于需要监控和管理GPU资源的开发者来说,这个模块显得尤为重要...
如果使用的是SQLite,Python的sqlite3模块将非常方便,可以直接在Python代码中执行SQL操作。 此外,项目可能还涉及到了错误处理和异常处理,以确保程序在遇到问题时能够稳定运行。比如,当网络请求失败或解析错误时...
python + flask web + echart + mysql + 爬虫模块 + CSV(基于csv分析显示,csv使用八爪鱼获取或者自己生成也行) 模块分析 登录模块 选择领域模块 (本系统出来微博爬虫,还基于csv文件分析) 微博信息模块 (它有一...
集成PyUpdater到项目中,你需要在你的主程序文件中导入必要的模块,并设置更新服务器地址、应用信息等参数。以下是一个简单的示例: ```python from pyupdater.client import Client app_id = 'your_app_id' app_...
Cocos Creator是一款强大的2D游戏引擎,支持跨平台开发,而“Python实现的Cocos热更工具”则是为了简化Cocos Creator游戏的热更新流程而设计的。 这个工具的核心功能是生成热更列表,它遍历`src`和`res`两个关键...
本文将深入探讨如何使用Python进行热辐射可视化和热辐射成像。热辐射是物体因温度差异而发射电磁波的现象,主要体现在红外线区域。在科学研究、工程应用以及环境监测等领域,理解和分析热辐射具有重要意义。 首先,...
Python的collections模块中的`Counter`类可以帮助我们轻松地完成这项任务。通过`Counter(words)`可以得到一个字典,其中键是单词,值是其出现次数。 5. **热词云图**: 为了视觉化这些高频词汇,我们将使用Python...
本文献主要讨论了如何使用遗传算法结合Python的多处理器并行计算技术来求解二阶热传导方程初边值问题的数值解法。下面将详细介绍本文献涉及的几个关键知识点。 首先,二阶热传导方程是一类偏微分方程,它是热力学中...
python从入门到精通第二版pdf 这份文档旨在帮助想要学习Python爬虫的初学...4. 爬虫实战:爬取微博热搜榜 在学习过程中,我们将会提供大量的代码示例和实战项目,以帮助您更好地理解和掌握Python爬虫。祝您学习愉快!
【Python-汤不热python多线程爬虫】 在Python编程中,Web爬虫是一种用于自动提取网页数据的工具,广泛应用于数据分析、信息提取、搜索引擎优化等领域。本项目聚焦于使用Python实现对“汤不热”(tumblr)平台的多...
通常,这个过程包括将库添加到Python的路径中,确保系统能够找到并正确加载所需的模块。 2. **连接和初始化相机**: 使用SDK,你可以编写Python代码来查找和连接到可用的FLIR红外相机。初始化相机后,你可以设置...
Python使用技巧,实战应用...详细介绍了一些Python框架的各种功能和模块,以及如何使用Python进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的开发者,能够帮助你快速上手JPython并掌握其高级特性。
### 基于Python微博热搜数据分析系统设计与实现 #### 概述 随着社交媒体网络的快速发展及智能手机的广泛普及,越来越多的网民倾向于在社交媒体平台上分享自己对于时事热点的观点和感受。微博作为中国最大的社交...
4. **可扩展性**:作为一个Python项目,AuditRss可能采用了模块化设计,允许开发者根据需求进行自定义扩展,例如添加新的推送渠道,或者实现更复杂的过滤规则。 5. **安全相关**:作为标签“Python开发-安全相关”...
标准库概览部分将展示Python自带的各种实用模块,如正则表达式、CGI编程、MySQL数据库连接、网络编程、SMTP邮件发送、多线程、XML解析、JSON数据解析以及日期和时间操作。 【其他技术教程】 除了Python3,教程还...
6. **保存为JSON**:Python内置了`json`模块,可以方便地将数据序列化为JSON格式。使用`json.dump()`函数,将热搜话题的字典列表写入到本地文件中,文件名可以根据需求自定义,这里可能是"weibo-hot-search.json"。 ...
通过阅读《Abaqus-python入门体会》这份文档,你可以了解到如何设置工作环境,导入所需的模块,以及编写基本的建模和分析脚本。 **Abaqus-Python开发使用指南** 这份详尽的指南将深入探讨Abaqus-Python开发的各个...
为了实现配置的动态加载和热更新,可以在程序运行期间监控配置文件的变化,并在文件更新时重新加载配置。可以使用`watchdog`库来监听文件系统的变动。 9. **配置文件的最佳实践** - 将配置文件和代码分开存放,以...
2. **ABAQUS API介绍**:了解ABAQUS提供的Python接口,包括`abaqus`、`cae`、`mdb`等模块,以及它们在模型创建、操作和结果分析中的作用。 3. **模型创建**:学习如何通过Python脚本来创建几何模型、定义材料属性、...
影响分析模块 (影响分析我们根据数据库中的数据来分析,主要做两部获取数据库中最大的热度标题,jiba分词获取出现频率最大的热搜,和最小的热搜) 舆情分析模块 (单独的使用snow就行因为舆情分析包含了情感分析...