python代码动态执行(python能动态加载代码吗?)

1.python能动态加载代码吗?

增量开发必须是在线的吗? 不了解。

我举个例子吧:在 a.py 中有一句x, y= 1,2复制代码现在从 python 中 import a 就可以使用这个模块了>>> import a>>> a.x1>>> a.y2复制代码现在可以 '卸载‘ 这个包的一部分>>> del a.y>>> a.yTraceback (most recent call last): File "", line 1, in AttributeError: 'module' object has no attribute 'y'>>> a.x1复制代码可以看到 a.y 没有了,但 a.x 还在如果要把整个模块 a 去掉:>>> del a>>> a.xTraceback (most recent call last): File "", line 1, in NameError: name 'a' is not defined>>> 复制代码。

python代码动态龙卷风,python代码画动态烟花,python代码画动态樱花

2.如何使用Python动态控制Linux系统的内存占用百分比

近期有网上朋友寻求帮助:如何通过脚本动态控制Linux系统的内存占用百分比?经过一番百度+编写调试,终于初步完成了动态控制Linux系统内存占用百分比。

现写出来以帮助更多的朋友。1 前言根据需求是动态控制Linux系统内存占用百分比,比如当前内存占用30%,如果设置内存占用为70%,则需要申请内存使达到占用70%;如果再降低到40%,则需要释放部分申请的内存。

其实脚本的本质是内存动态申请与释放。注意:因为Python脚本运行之前内存有一定占用,故设定内存占用不能低于该百分比。

2 内存动态申请通过查询资料,使用Python动态申请内存块,可以使用ctypes包中的函数,导入包及代码如下所示:>>> from ctypes import *>>> mem=create_string_buffer(1024)说明:内存申请使用create_string_buffer()函数,上面申请了1024字节的内存块。下面演示申请100MB内存前后变化申请前如下图所示:使用代码如下:>>>mem=create_string_buffer(104857600)申请后如下图所示:从上述两幅图中可以看出,申请内存前内存占用295MB,申请后内存占用397MB,增加了约100MB内存占用。

3 内存动态释放由于Python对内存是有垃圾回收机制的,采用对象引用计数方式。当对象的引用计数为0时,启动垃圾回收GC。

此处内存动态释放就是使用该原理。代码如下:>>> mem=None释放后内存占用如下图所示:内存占用由397MB降低到297MB,释放了100MB内存占用。

说明:将None赋值给对象mem后,mem对象的引用计数即为0,此时垃圾回收启动,释放mem对象占用的内存。4 系统总内存、占用内存检测由于需要设定内存占用百分比,故需要获取系统总物理内存和占用内存。

本文使用的方法是读取系统文件“/proc/meminfo”,从中解析出总内存大小以及当前内存占用大小等内存相关的信息。该文件内容格式如下图所示:代码片段如下所示:f = open("/proc/meminfo") lines = f.readlines() f.close() for line in lines: if len(line)< 2:continue name = line.split(':')[0] var = line.split(':')[1].split()[0] mem[name]= long(var)* 1024.0 mem['MemUsed']= mem['MemTotal']- mem['MemFree']说明:按行读取meminfo文件内容,创建字典对象mem,将meminfo文件第一列设置为mem对象的键值,将meminfo文件第二列数字设置为mem对象的值。

5 获取用户输入百分比通过读取键盘输入字符串,然后转换为数字实现接收用户输入的百分比,代码如下所示:input_str=raw_input("Input UsedMemory`s Rate or q to exit:")rate=float(input_str)注意:此处键盘输入的都是字符串,需要进行字符串转换为数字,使用float()或long()函数进行转换。6 动态设置内存占用百分比测试测试使用两个Python脚本文件,分别是test.py和mem_rate.py,其功能分别是查看当前内存占用和动态设定内存占用百分比。

如下图所示:注意:上述两个文件需要使用“chmod +x *.py”修改为可执行属性。6.1 查看当前内存占用查看当前内存占用百分比,使用上述test.py文件,运行命令为“./test.py”,运行结果如下图所示:当前使用内存为320MB,占用百分比为17%。

6.2 动态设置内存占用百分比动态设置内存占用百分比使用上述mem_rate.py脚本,注意该脚本文件第一行代码为“#!/usr/bin/python2.6”,表示该脚本使用python2.6程序运行。该行需要修改为待运行Linux系统中Python实际的安装程序路径。

动态内存百分比设置界面如下图所示:处于待输入状态。另外显示了当前内存占用(321MB),总内存大小(1869MB)以及内存占用百分比(17%)。

如果此时设置内存占用百分比为80%,则脚本会每次申请10MB空间,直至内存占用接近或等于80%为止。如下图所示:内存申请过程如下图所示:内存申请过程中占用百分比变化为:35%,45%,56%,70%,…mem_rate.py运行过程如下图所示:内存申请过程中占用变化为:1461MB,1471MB,1481MB,1491MB。

此时如果内存占用百分比设置为20%,则需要释放一部分内存。test.py脚本运行过程如下图所示:由于释放内存运行较快,抓取到最后结果内存占用为20%。

mem_rate.py脚本运行过程如下图所示:内存释放过程中内存占用为:413MB,403MB,393MB,383MB,最后内存占用稳定在20%,383MB。输入“q”或“Q”退出内存占用百分比设定过程,如下图所示:此时内存占用如下图所示:内存占用恢复到运行mem_rate.py脚本之前状态,17%,321MB。

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※附:完整Python脚本代码test.py------------------------------------------------------------------------------------------------#!/usr/bin/python2.6def memory_stat(): mem = {} f = open("/proc/meminfo") lines = f.readlines() f.close() for line in lines: if len(line)< 2:continue name = line.split(':')[0] var = line.split(':')[1].split()[0] mem[name]= long(var)* 1024.0 mem['MemUsed']= mem['MemTotal']- mem['MemFree']# - mem['Buffers']- mem['Cached'] return memmem=memory_stat()print("Used(MB):%d"%(long(mem['MemUsed'])/1024/1024))print("Rate:%d%%"%(100*long(mem['MemUsed'])/float(。

执行,代码,动态,python

3.为什么说Python是一门动态语言

首先要理解什么是动态语言:通俗地说:能够在运行时修改自身程序结构的语言,就属于动态语言。那怎样才算是“运行时修改自身程序结构”捏?比如下面这几个例子都 算:在运行时给某个类增加成员函数及成员变量;在运行时改变某个类的父类;在运行时创建出某个函数.。

Python是可以实现动态类的创建类(在任意代码位置,符合正确的书写格式),或者给类增加删除属性。因为类也是对象,你可以在运行时动态的创建它们,就像其他任何对象一样。首先,你可以在函数中创建类,使用class关键字即可。

例子:

def choose_class(name):

if name == 'foo':

class Foo(object):

pass

return Foo # 返回的是类,不是类的实例

else:

class Bar(object):

pass

return Bar#排版有问题 不好意思

#如果你觉得还不够动态,因为你仍然需要自己编写整个类的代码。由于类也是对象,

#所以它们必须是通过什么东西来生成的才对。当你使用class关键字时,Python解释器自动创建这

#个对象。但就和Python中的大多数事情一样,Python仍然提供给你手动处理的方法。内建函数中有

#一个名叫type的内建函数,这个内建函数古老但强大的函数, 它能够让你知道一个对象的类型是

#什么,就像这样:

>>> MyShinyClass = type('MyShinyClass', (), {}) # 返回一个类对象

>>> print MyShinyClass<class '__main__.MyShinyClass'

>>>> print MyShinyClass() # 创建一个该类的实例

<__main__.MyShinyClass object at 0x8997cec>;另附type使用方法:

#type(类名, 父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值))

4.为什么说Python是一门动态语言

首先要理解什么是动态语言:通俗地说:能够在运行时修改自身程序结构的语言,就属于动态语言。

那怎样才算是“运行时修改自身程序结构”捏?比如下面这几个例子都 算:在运行时给某个类增加成员函数及成员变量;在运行时改变某个类的父类;在运行时创建出某个函数.。Python是可以实现动态类的创建类(在任意代码位置,符合正确的书写格式),或者给类增加删除属性。

因为类也是对象,你可以在运行时动态的创建它们,就像其他任何对象一样。首先,你可以在函数中创建类,使用class关键字即可。

例子:def choose_class(name): if name == 'foo': class Foo(object): pass return Foo # 返回的是类,不是类的实例 else: class Bar(object): pass return Bar#排版有问题 不好意思#如果你觉得还不够动态,因为你仍然需要自己编写整个类的代码。由于类也是对象,#所以它们必须是通过什么东西来生成的才对。

当你使用class关键字时,Python解释器自动创建这#个对象。但就和Python中的大多数事情一样,Python仍然提供给你手动处理的方法。

内建函数中有#一个名叫type的内建函数,这个内建函数古老但强大的函数, 它能够让你知道一个对象的类型是#什么,就像这样:>>> MyShinyClass = type('MyShinyClass', (), {}) # 返回一个类对象>>> print MyShinyClass>>> print MyShinyClass() # 创建一个该类的实例<__main__.MyShinyClass object at 0x8997cec>另附type使用方法:#type(类名, 父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值))。

5.python怎么生成可执行文件

Python是一个脚本语言,被解释器解释执行。

它的发布方式:.py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的).pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。

可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可。

比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,。)。

本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python本身就可以搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍PyInstaller,其它仅作比较和参考。

Freezing Your Code 各种打包工具的对比如下(来自文章Freezing Your Code):Solution Windows Linux OS X Python 3 License One-file mode Zipfile import Eggs pkg_resources support bbFreeze yes yes yes no MIT no yes yes yes py2exe yes no no yes MIT yes yes no no pyInstaller yes yes yes no GPL yes no yes no cx_Freeze yes yes yes yes PSF no yes yes no py2app no no yes yes MIT no yes yes yes PS.其中pyInstaller和cx_Freeze都是不错的,stackoverflow上也有人建议用cx_Freeze,说是更便捷些。pkg_resources新版的pyInstaller貌似是支持的。

安装PyInstaller 对于那些网络比较稳定,能够流畅使用pip源地址的用户,直接下面的命令就可以搞定:pip install pyinstaller 通常我们会下载源码包,然后进入包目录,执行下面的命令(需要安装setuptools):python setup.py install 安装完后,检查安装成功与否:pyinstaller --version 安装成功后,就可以使用下面的命令了:pyinstaller : 打包可执行文件的主要命令,详细用法下面会介绍。pyi-archive_viewer : 查看可执行包里面的文件列表。

pyi-bindepend : 查看可执行文件依赖的动态库(.so或.dll文件)pyi-。 : 等等。

使用PyInstaller pyinstaller的语法:pyinstaller [options] script [script 。] | specfile 最简单的用法,在和myscript.py同目录下执行命令:pyinstaller mycript.py 然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件,对于上面的命令你会发现dist目录下面有一堆文件,各种都动态库文件和myscrip可执行文件。

有时这样感觉比较麻烦,需要打包dist下面的所有东西才能发布,万一丢掉一个动态库就无法运行了,好在pyInstaller支持单文件模式,只需要执行:pyinstaller -F mycript.py 你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的操作系统类似的系统的下面。当然,pyinstaller还有各种选项,有通用选项,如-d选项用于debug,了解pyInstaller执行的过程;还有一些针对不同平台的选项,具体用法可以访问PyInstaller官方WIKI。

在执行pyInstaller命令的时候,会在和脚本相同目录下,生成一个.spec文件,该文件会告诉pyinstaller如何处理你的所有脚本,同时包含了命令选项。一般我们不用去理会这个文件,若需要打包数据文件,或者给打包的二进制增加一些Python的运行时选项时。

一些高级打包选项时,需要手动编辑.spec文件。可以使用:pyi-makespec options script [script 。

] 创建一个.spec文件,对于手动编辑的.spec文件,我们可以使用下面任意一条命令:pyinstaller specfile pyi-build specfile PyInstaller的原理简介 PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运行者的机器上不用安装python和你的脚本依赖的库。在Linux操作系统下,它主要用的binutil工具包里面的ldd和objdump命令。

PyInstaller输入你指定的的脚本,首先分析脚本所依赖的其他脚本,然后去查找,复制,把所有相关的脚本收集起来,包括Python解析器,然后把这些文件放在一个目录下,或者打包进一个可执行文件里面。可以直接发布输出的整个文件夹里面的文件,或者生成的可执行文件。

你只需要告诉用户,你的应用App是自我包含的,不需要安装其他包,或某个版本的Python,就可以直接运行了。需要注意的是,PyInstaller打包的执行文件,只能在和打包机器系统同样的环境下。

也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包。参考资料。

6.python 如何抓取动态页面内容

输入url,得到html,我早就写了函数了 自己搜:getUrlRespHtml 就可以找到对应的python函数: #------------------------------------------------------------------------------ defgetUrlResponse(url, postDict={}, headerDict={}, timeout=0, useGzip=False, postDataDelimiter="&") : """Get response from url, support optional postDict,headerDict,timeout,useGzip Note: 1. if postDict not null, url request auto become to POST instead of default GET 2 if you want to auto handle cookies, should call initAutoHandleCookies() before use this function. then following urllib2.Request will auto handle cookies """ # makesure url is string, not unicode, otherwise urllib2.urlopen will error url =str(url); if(postDict) : if(postDataDelimiter=="&"): postData =urllib.urlencode(postDict); else: postData =""; foreachKey inpostDict.keys() : postData +=str(eachKey) +"="+str(postDict[eachKey]) +postDataDelimiter; postData =postData.strip(); logging.info("postData=%s", postData); req =urllib2.Request(url, postData); logging.info("req=%s", req); req.add_header('Content-Type', "application/x-press #if(useGzip) : #print "---before unzip, len(respHtml)=",len(respHtml); respInfo =resp.info(); # Server: nginx/1.0.8 # Date: Sun, 08 Apr 2012 12:30:35 GMT # Content-Type: text/html # Transfer-Encoding: chunked # Connection: close # Vary: Accept-Encoding # 。

# Content-Encoding: gzip # sometime, the request use gzip,deflate, but actually returned is un-gzip html # -> response info not include above "Content-Encoding: gzip" # eg: # -> so here only decode when it is indeed is gziped data #Content-Encoding: deflate if("Content-Encoding"inrespInfo): if("gzip"==respInfo['Content-Encoding']): respHtml =zlib.decompress(respHtml, 16+zlib.MAX_WBITS); elif("deflate"==respInfo['Content-Encoding']): respHtml =zlib.decompress(respHtml, -zlib.MAX_WBITS); returnrespHtml; 及示例代码:12 url =""; respHtml =getUrlRespHtml(url); 完全库函数,自己搜:crifanLib.py 关于抓取动态页面,详见:Python专题教程:抓取网站,模拟登陆,抓取动态网页 (自己搜标题即可找到)。

python代码动态执行

转载请注明出处编程代码网 » python代码动态执行(python能动态加载代码吗?)

资讯

python错误提示(Python出现错误,怎么解决,求解)

阅读(13)

本文主要为您介绍python错误提示,内容包括python错误提示的意思,Python出现错误,怎么解决,求解,Python中提示错误,什么情况?。1.SyntaxError: Missing parentheses in call to print错误命令:print hello,

资讯

pythonversion2.7(python2.7中如何执行java)

阅读(14)

本文主要为您介绍pythonversion2.7,内容包括python2.7中如何执行javaversion或者pythonversion命令?搜狗,生产环境中的Python版本由2.6升级至2.7可能会带来哪些问题百度,python版本为2.7,安装哪个ipython。os.popen已经是明确不推荐使用的

资讯

python数据分析软件(数据分析工具有哪些python)

阅读(12)

本文主要为您介绍python数据分析软件,内容包括python数据分析用什么软件,数据分析工具python,利用python进行数据分析用什么软件。IPython IPython 是一个在多种编程语言之间进行交互计算的命令行 shell,最开始是用 python 开发的,提供增强的

资讯

python和c的关系(python与C的区别)

阅读(11)

本文主要为您介绍python和c的关系,内容包括python与C的区别,python与C的区别,C语言和Python有什么区别呢?。python与C的区别如下。语言类型不同。Python是一种动态类型语言,又是强类型语言。它们确定一个变量的类型是在您第一次给它赋值的时

资讯

php和python比较(python与php的异同,和各自的优缺点?)

阅读(12)

本文主要为您介绍php和python比较,内容包括python与php的异同,和各自的优缺点?,php与python语言学哪一个比较好?,PHP好还是python好。相同点: 都是动态类型的解释型高级脚本语言。不同点既各自优缺点:PHP名称的含义是“超文本预处理器”。仅

资讯

vs2010开发python(VS2010中Python的可视化编程如何实现??)

阅读(13)

本文主要为您介绍vs2010开发python,内容包括怎样在vs2010这个集成环境上,使用python语言?,VS2010中Python的可视化编程如何实现??,VisualBasic2010python哪个好学,哪个功能强大?。pyqt开发我们都是用eric4的。所以也不需要手动生成py文件了

资讯

python购物网站(推荐几个学习Python的免费网站)

阅读(13)

本文主要为您介绍python购物网站,内容包括python可以用来做电商网站吗,如何用python实现淘宝搜索商品并点击进入商品页面,爬虫小白求问python如何爬取天猫京东等网页。Python @ Coursera

资讯

python计算积分(在python中如何求定积分)

阅读(8)

本文主要为您介绍python计算积分,内容包括在python中如何求定积分,在python中如何求定积分,如何应用python求函数积分。在python中求定积分的方法:导入计算积分的sympy包;2、输入“x= symbols("x")”命令定义一个符号;3、定义要积分的

资讯

pythonpayload(如何使用python编写poc,exp)

阅读(10)

本文主要为您介绍pythonpayload,内容包括python中urllib2.Request如何postrequestpayload?,requestpayload的值python怎么获取,小弟最近在用python写爬虫玩儿,遇到一个requestpayload的方式。然后来谈谈自己的看法:其实吧,无论乌云的Tangscan

资讯

python线程互斥(如何让Python线程支持excepthook)

阅读(8)

本文主要为您介绍python线程互斥,内容包括怎么用python实现互斥写文件,python除了互斥锁还有什么锁,python除了互斥锁还有什么锁。在游戏中,一般会在主线程开始时,设置一个 excepthook,来对程序异常进行特定处理。每个线程都有自己的栈,只要在

资讯

python感叹号(是否有)

阅读(11)

本文主要为您介绍python感叹号,内容包括Python中感叹号的作用,Python中感叹号的作用,python按着书上来的,不知道为什么错了,那个感叹号是干什么用的?。直接看第4条,n! 意思是从1乘到n”!“这个符号叫做感叹号。2、感叹号,为标点符号的一种,又称

资讯

pythontrie树(Python里面用什么trie树实现模块比较好)

阅读(12)

本文主要为您介绍pythontrie树,内容包括Python里面用什么trie树实现模块比较好,如何用java或python编程实现steiner树,trie树。Trie树是一种树的数据结构,又被称为字典树,非常适用于Ajax自动补全等场景,因为它通过空间换时间能极大提高特别字

资讯

插件框架python(如何设计插件式结构的程序,兼谈Python语言)

阅读(13)

本文主要为您介绍插件框架python,内容包括软件直接支持用Python写插件,如何设计插件式结构的程序,兼谈Python语言,python的框架知乎。为了扩充软件的功能,通常我们会把软件设计成插件式结构。Python这样的动态语言天生就支持插件式编程。与C

资讯

随机字母python(python如何自动生成单个随机字母(a)

阅读(11)

本文主要为您介绍随机字母python,内容包括python如何自动生成单个随机字母(az),python如何自动生成单个随机字母(az),python如何实现在列表中随机插入字母?。1:mport random#导入random模块 用于生产随机数功能2:a = random.randint(97, 12

资讯

python错误提示(Python出现错误,怎么解决,求解)

阅读(13)

本文主要为您介绍python错误提示,内容包括python错误提示的意思,Python出现错误,怎么解决,求解,Python中提示错误,什么情况?。1.SyntaxError: Missing parentheses in call to print错误命令:print hello,

资讯

pythonversion2.7(python2.7中如何执行java)

阅读(14)

本文主要为您介绍pythonversion2.7,内容包括python2.7中如何执行javaversion或者pythonversion命令?搜狗,生产环境中的Python版本由2.6升级至2.7可能会带来哪些问题百度,python版本为2.7,安装哪个ipython。os.popen已经是明确不推荐使用的

资讯

python数据分析软件(数据分析工具有哪些python)

阅读(12)

本文主要为您介绍python数据分析软件,内容包括python数据分析用什么软件,数据分析工具python,利用python进行数据分析用什么软件。IPython IPython 是一个在多种编程语言之间进行交互计算的命令行 shell,最开始是用 python 开发的,提供增强的

资讯

python和c的关系(python与C的区别)

阅读(11)

本文主要为您介绍python和c的关系,内容包括python与C的区别,python与C的区别,C语言和Python有什么区别呢?。python与C的区别如下。语言类型不同。Python是一种动态类型语言,又是强类型语言。它们确定一个变量的类型是在您第一次给它赋值的时

资讯

php和python比较(python与php的异同,和各自的优缺点?)

阅读(12)

本文主要为您介绍php和python比较,内容包括python与php的异同,和各自的优缺点?,php与python语言学哪一个比较好?,PHP好还是python好。相同点: 都是动态类型的解释型高级脚本语言。不同点既各自优缺点:PHP名称的含义是“超文本预处理器”。仅

资讯

vs2010开发python(VS2010中Python的可视化编程如何实现??)

阅读(13)

本文主要为您介绍vs2010开发python,内容包括怎样在vs2010这个集成环境上,使用python语言?,VS2010中Python的可视化编程如何实现??,VisualBasic2010python哪个好学,哪个功能强大?。pyqt开发我们都是用eric4的。所以也不需要手动生成py文件了

资讯

python购物网站(推荐几个学习Python的免费网站)

阅读(13)

本文主要为您介绍python购物网站,内容包括python可以用来做电商网站吗,如何用python实现淘宝搜索商品并点击进入商品页面,爬虫小白求问python如何爬取天猫京东等网页。Python @ Coursera

资讯

python帮助文档(请教如何用python下载文件到本地)

阅读(6)

本文主要为您介绍python帮助文档,内容包括pythonwin32api自动登陆,请教如何用python下载文件到本地,python有中文的帮助文档吗。知道文件的url地址就用urllib模块的urlretrieve函数。urllib.urlretrieve(url, filename)