`
jeffreydan
  • 浏览: 26770 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
起因 前段时间,在做文本处理的实验时,需要预加载大量的原始数据(100W),在Python中使用的字典(dict)类型负责保存这些数据,很快就开发完成 了一个Demo版,然而程序执行的效率不是那么令人满意,通过使用Python中的profile发现,影响程序执行性能的关键语句就那么几条(用 dict保存加载后原始数据,这是个循环遍历。) 解决问题 既然找到了问题源,于是就勒起衣袖开始动手尝试使用各种解决方案替代效率不佳的,经过多次的反复尝试,调优的效果不太明显,最后一个idea:考虑Python垃圾回收机制的影响了,最后也证明了这个想法的靠谱程度,本文后续部分将分享调优的过 ...
最近在做一些文本处理方面的事情,考虑到程序利用并发性可以提高执行效率(不纠结特殊反例),于是入围的Idea如使用多进程或多线程达到期望的目标,对于进程或线程的创建是有代价的,那么我们是否可以实现一个线程池来 ...
使用python开发时,由于python的开源生态圈非常的给力,对于实现同一个功能,往往在这方面的类库非常多,而开发者也同样面临着如何选择最佳的 类库作为辅助开发的工具。本文将记录本人在使用python处理xml格式数据时测试过的类库,有些类库由于先天不足,无法支持一些特性,涉及的类库或模 块有xml (python自带)、libxml2 、lxml 、xpath 。 附注:本文处理xml格式的数据的结构如下: input_xml_string = """ <root> ...
一、糟糕的代码 在使用python编程语言处理查找列表或字典中的某个数据项时,我经常看到这样的代码(省略具体逻辑): 场景一: try: data_list = find("condition")[0] except: pass 场景二: try: dict_list = find("condition")["key"] except: pass  以上这些代码虽然能够满足程序的功能,但这都不是最佳的实现方式,原因如下: 1、try捕获异常会造成异常(软中断),会影响性能 ...
  “对立志要成为更优秀的程序员的人来说,本书就是他们的 圣经” “看了这本书的读者,职业眼界会更开阔,应该不会再做无 谓的重复劳动”   以上文字引用<<编程人生>> ...
Twisted 是基于Python语言在网络应用方面的类库,能够很好的兼容Windows与Linux平台,用来开发网络应用方面的软件非常方便。类库中包含一个代理上网的功能,可以用来小爽一把建立代理服务器。 Twisted代理功能的应用: from twisted.internet import reactor from twisted.web import proxy, http class Handler(http.HTTPFactory): protocol = proxy.Proxy class OpenProxy(object): def __ca ...
在编程语言中,一般在语法上都支持代码模块化功能,使之降低耦合度和功能重用,python同样也支持。在python中,模块是以一个python文件 为单位加以封装,并支持以下2种常方式,供第三方使用模块成员。(下面分别说明时,我们假设存在以下python源文 件:main.py,logic.py,model.py且下面提到的当前全局空间是对应main.py) 一、import用法 我们可以通过以下代码导入模块至当前全局空间中(可以通过globals()查看) import logic,model 使用上面的方法导入,在需要使用该模块内的成员(变量,方法,类...)时,需要从模块名出 ...
在英语词典方面,Linux环境下的软件远不及Win环境下,由于工作一般都在Linux环境下,并且希望在堆码的时候不用离开vim编辑器,于是花了一 点时间写了个翻译的小工具,主要方便我在Linux环境下遇到不认识的英语单词时充当翻译小助手。这个小工具使用Python语言编写完成,其中使用到这 些类库(urllib,BeautifulSoup ),前者主要负责网络通讯方面,后者负责HTML的解析。这也是Python语言生态圈的强大之处,写个这样的小工具,毫不费力。 在线翻译的原理:首先根据用户输入的单词提交给百度词典 ,其次读取百度词典返回的数据并解析,最后将处理过的数据显示给用户。以下是 ...
记得迷上Python 的那段时间,同时也关注了IronPython 一段时间,IronPython项目的源代码中就包含了一个简单的HttpServer,因为一直都对Web服务器的运行机制很感兴趣,因此研究了一下源代码并跟踪调试,也让我这服务器开发的门外汉体验了一把。 熟话说,看归看,写归写,写程序远比看懂代码有难度多了,于是乎堆码热情澎湃,堆了一个HttpServer雏形(实现原理的模型) 一、阻塞模型 阻塞模型,当您的程序运行到某条代码时(请求I/O操作),当前进程将等待在调用处,后面的语句将不继续执行,直到引起阻塞的语句执行完毕后,等待出后面 的语句将可继续执行,从这里我 ...
最近花了一天的时间使用Pygtk开发了一个下载器Demo,这个小工具也可以认为是在线升级的原始模型,功能很简单,根据配置文件的Url地址下载数据到本地。 之前一直都没有接触过gtk编程,好在高中时就开始用VB写Winform程序,有 ...
Global site tag (gtag.js) - Google Analytics