2012年5月24日

摘要: 本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程序源码例子例如,有模拟税收计算的程序:#!/usr/bin/pythondef debug_demo(val): if val <= 1600 : print "level 1" print 0 elif val <= 3500 : print "level 2" print (val - 1600) * 0.05 elif val <= 6500 : print "level 3" print (val - 3500) * 0.10 + (35 阅读全文
posted @ 2012-05-24 16:03 很多不懂呀。。 阅读(721) 评论(0) 推荐(0) 编辑
摘要: 当我们开发的项目比较大时,源文件也许是按照目录结构来存放的这样,就类似于java的package如果我们需要下级目录的py文件,可以有以下方法:1.sys.path.append('folder') 然后直接import folder.test2.在下级目录folder下放一个__init__.py文件,表明把目录作为一个module来对待然后直接import folder.test如果需要导入上层目录的py文件,则:sys.path.append(“..”)然后再import test 阅读全文
posted @ 2012-05-24 13:48 很多不懂呀。。 阅读(737) 评论(0) 推荐(1) 编辑
摘要: python中如果要使用全局变量,可以:1.在需要赋值的地方使用global:python中,如果在py中定义一个变量,然后在一个函数内对这个变量进行赋值操作,默认会生成一个局部变量而不是对原来的全局变量进行赋值的,如果想改变外边的变量的值,则要加上global2.调用对象的方法,如del,clear,append,pop:如果在外部定义一个如list,set,dic这样的对象时,如果对它们整体赋值,如:dic={},则仍然是生成一个局部变量dic但,如果调用这些对象的方法(clear,del,append,pop….)进行操作,如:dic.clear()或dic['a']=& 阅读全文
posted @ 2012-05-24 13:47 很多不懂呀。。 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 当我们运行一个单独的py文件,则python是不会编译该文件为pyc的,而是直接解释运行它但如果我们的一个py文件作为一个module被其它的py文件import,那么python默认会编译它为pyc文件pyc文件是python的字节码文件,其实还有一种pyo文件,是优化后的字节码文件如果想编译成pyc文件,可以使用py_comile或compileall模块折叠展开复制代码#编译单个文件import py_compile py_compile.compile('/opt/ysz/python/test.py') #编译整个目录import compileall compile 阅读全文
posted @ 2012-05-24 13:47 很多不懂呀。。 阅读(702) 评论(0) 推荐(0) 编辑
摘要: meliae是一个python进程内存占用监控、分析工具,它的安装需要依赖pyrex包meliae会把某个时刻的内存给dump到一个文件中,然后再对该文件进行分析当我们的某个python程序占用内存很大,可能有内存泄露发生时,可以使用该工具来进行检测分析安装和使用用都比较简单,在需要dump内存的地方,写上以下代码即可:折叠展开复制代码from meliae import scanner scanner.dump_all_objects('/opt/log/dump.txt') 这样,我们就可以把当前的内存Objects都导出到了dump.txt,然后再进行分析折叠展开复制代码 阅读全文
posted @ 2012-05-24 13:43 很多不懂呀。。 阅读(2122) 评论(0) 推荐(0) 编辑
摘要: twisted中的factory和对应的protocol结合大概有2种方式:1.在factory中定义:protocol = POP3ClientProtocol 这种方式默认是在twisted的prtocol.py中的buildProtocol方法中来生成对应的protocol实例,代码如下:def buildProtocol(self, addr): p = self.protocol() p.factory = self return p 这样,在protocol的init方法中是无法得到当前factory对象的,只能是在protocol的某个事件回调函数里去拿到factory 经常,我 阅读全文
posted @ 2012-05-24 13:37 很多不懂呀。。 阅读(975) 评论(0) 推荐(0) 编辑
摘要: 一般,在Twisted中使用Application的方式启动程序,是这样做:折叠展开复制代码pop_service = internet.TCPServer(…,…) popService = service.MultiService() pop_service.setServiceParent(popService) application= service.Application('popqueueservice') popService.setServiceParent(application) 通过setServiceParent来把某一个服务运行在applicatio 阅读全文
posted @ 2012-05-24 13:35 很多不懂呀。。 阅读(1157) 评论(0) 推荐(0) 编辑

导航