我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python Module Auto R

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python Module Auto R

Python 的模块一旦加载就会常驻内存,直到程序结束。再碰到 import 语句式只是修改名字空间,而不需要重新加载。这种机制是出于运行时的效率考虑,每遇到 import 的时候重新加载显然很低效。它也不会检查源文件的修改时间以确定是否重新加载,Python 有那么多的模块,每次调用时都检查一遍时间也是不行的。
这种机制下,开发长时间运行的守护程序就会很麻烦,修改源代码后要重新启动程序才能让新的代码生效。比如用 mod_python 做 web 开发,Apache 会启动多个守护进程来应答客户请求,里面有 python 的解释引擎和加载的模块,若要让修改后的代码生效只能重起 apache,这会影响到其它服务的正常运行,非常不方便。mod_python 有一个PythonAutoReload 参数,它只是针对 PythonHandler 而言的,能够对设定的 PythonHandler 实现自动重新加载,而该 Handler 中所用到的模块却不能自动 reload。
这种修改源代码然后重起 apache 的调试方式实在让我无法忍受了,决定实现一种自动重新加载机制。基本的思路就是每个用户请求到来时,检查我所关心的那些模块源文件的修改时间,如果比加载时的修改时间新,则重新加载。
编写一个检测时间和重新加载的函数,让它在每个请求到来时执行:
undefined view plain copy to clipboard print ?
  1. def  autoreload():   
  2.   mod_names = ['Entry','Index','SideBar']   
  3.    for  mod_name  in  mod_names:   
  4.      try :   
  5.       module =  sys .modules[ mod_name ]   
  6.      except :   
  7.        continue   
  8.     mtime =  os .path.getmtime( module.__file__ )   
  9.      try :   
  10.        if  mtime > module.loadtime:   
  11.          reload ( module )   
  12.      except :   
  13.      pass   
  14.     module.loadtime = mtime   
这段代码不长,但是改了好多个版本,最开始用 has_key() 的方式来检测是否存在某个模块,检测该模块是否有 loadtime 属性( 用 module.__dict__ ),现在这种方式应该效率高一些,曾经在一个 blog 上看到过对比测试数据。起初还在每个关心的模块里面加上一句loadtime = os.path.getmtime( __file__ ),这是不必要的,因为 Python 用的是动态类型,可以在运行时追加属性,第一次检测时设置初始状态即可。
有了这段代码,开发 BlogXP 方便多了,改了源码之后立马就能生效,而且它在正常运行时的消耗也很小。另外,由于mod_python 能够实现指定的 Handler 的自动重新加载,将这段代码放在该 Handler 中,可以方便地改变所关心的模块列表,也不需重起 apache。
欢迎批评指正:-)
from: [url]http://blog.daviesliu.net/article/entry20050610-235635[/url]

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python Module Auto R

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python Module Auto R

Python 的模块一旦加载就会常驻内存,直到程序结束。再碰到 import 语句式只是修改名字空间,而不需要重新加载。这种机制是出于运行时的效率考虑,每遇到 import 的时候重新加载显然很低效。它也不会检查源文件的修改时间以确定是否重
2023-01-31

python+selenium+auto

在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下第一种:type=file的上传文件,类似如下的使用类似这样的代码就可以完成:driver.find_element('name','file').send_k
2023-01-31

Python -- abc module

今天,我们要讲的是python的ABC 模块这个模块是用来定义一个抽象类。具体的概要介绍可以浏览PEP 3119。register 首先注册一个abc的虚拟子类from abc import ABCMeta  class MyABC:   
2023-01-31

python onvif module

opencvr在添加onvif接口的时候,会导致store那边异常挂掉,也不知道为啥。于是,想着,是不是python有类似onvif的接口工具呢,可以执行一些小命令啥的,于是找到了onvif这个pyton的module。apt-get in
2023-01-31

python module usage

hello.py#!/usr/bin/python def hello():print "imported me,hello world"def login():print "I'm already login"test.py-------
2023-01-31

python module manage

python模块     就是python的程序模块     顶层文件     模块文件1     模块文件2         可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块
2023-01-31

解决AttributeError(f"module {__name__!r} has no attribute {name!r}")在django出现报错

Traceback :要解决这个问题,你可以尝试以下几种方法:检查拼写是否正确。确保你访问的属性名称没有拼写错误。使用 `dir()` 函数查看模块中定义的所有属性。如果以上方法都没有帮助,可以尝试检查代码中是否存在其他错误。
解决AttributeError(f
2024-02-28

Python XML No module

在学习使用Python解析XML的过程中,使用官方文档https://docs.python.org/2/library/xml.etree.elementtree.html中的例子进行测试,代码如下:import xml.etree.El
2023-01-31

python错误:No module n

MySQL-python是Python访问MySQL数据库的第三方模块库;在安装过程中出现如下错误:[root@localhost MySQL-python-1.2.5]# python setup.py installTraceback
2023-01-31

python的module如何用

在Python中,我们使用`import`语句来导入模块。一旦导入了一个模块,我们就可以使用模块中定义的函数、变量和类。下面是导入模块的一些常见方式:1. 导入整个模块:```pythonimport module_name```这将导入整
2023-08-23

关于Python的Type,Module

关于Python的Type,Module,ClassPosted on 2007-07-13 by jeff类在Python中只是一种数据类型.而任何东西都是对象应该是针对Type来说的,对象是Type的实例,而并不限于是类的实例.要知道P
2023-01-31

Python version 2.7 r

安装PIL的时候,不能再注册表中识别出来python2.7在网上找了方法,仅作笔记,供下次使用 方法: 新建一个register.py 文件,把一下代码贴进去import sys   from _winreg import *   # tw
2023-01-31

关于Python中No module n

1.执行代码时报错 错误信息:ModuleNotFoundError: No module named 'requests' 错误截图: 查看python版本命令如下: python -V 查看python版本命令截图如下:2.解决办法1
2023-01-31

module怎么在python中使用

今天就跟大家聊聊有关module怎么在python中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相
2023-06-14

[Python]将你的module制作成

python解释器查找module进行加载的时候,查找的目录是存放在sys.path变量中的,sys.path变量中包含文件的当前目录。如果你想使用一个存放在其他目录的脚本,或者是其他系统的脚本,你可以将这些脚本制作成一个安装包,然后安装到
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录