python
largetalk
技术宅,享受coding, python粉丝,热爱c, linux,想找个人一起去旅行
展开
-
一次欲哭无泪的debug
我现有个服务,其中有段功能是将地理位置信息的json转成protobuf,代码不难:import jsonimport geobufj = json.load(open('xx', 'r'))pb = geobuf.encode(j)对于一般json是没什么问题,但是最近遇到一个大到280m的json文件,一执行到这里机器就被吃光内存卡死了,ssh都登录不了,只能重启T_T试...原创 2019-11-26 11:51:55 · 280 阅读 · 0 评论 -
pypy的速度
无聊作PE http://projecteuler.net/problem=10 , 求2百万以下数的所有数的总和python 随便写了一个big = 2000000import timeplst = [2, 3, 5, 7, 11, 13]t1 = time.time()for i in xrange(17, big, 2): for p in plst:原创 2012-12-07 11:01:05 · 2955 阅读 · 0 评论 -
python中那些双下划线开头得函数和变量
python中以双下划线的是一些系统定义得名称,让python以更优雅得语法实行一些操作,本质上还是一些函数和变量,与其他函数和变量无二。比如x.__add__(y) 等价于 x+y有一些很常见,有一些可能比较偏,在这里罗列一下,做个笔记,备忘。x.__contains__(y) 等价于 y in x, 在list,str, dict,set等容器中有这个函数__base__, _原创 2011-11-19 01:46:39 · 5870 阅读 · 0 评论 -
python dsl - pyparsing介绍
写在前面: 10月份一直在外面出差,都没看书或写代码,也打破了保持这么久每个月都写几篇博客的习惯,现在11月份也过去一半了,还是没做什么事情。感觉这写东西都慢慢写不下去了,难的写不了,简单的网上到处都是,前面写的那些也都是从各个地方收集自己复诉一遍而已。就当刷点存在感吧。昨天忽然想到ruby的dsl用的地方非常多,也比较容易写。基本上每个库都自己定义一套语言,我学ruby的时候就是受不原创 2012-11-16 11:31:35 · 15560 阅读 · 2 评论 -
tcp通信:多进程共享listen socket方式
看tornado源码多进程(process.py)那段,发现他的多进程模型和一般常见的模型有点不一样,多见的是主进程bind-> listen -> accept, 将accept返回的socket用子进程处理,而tornado是在bind -> listen -> fork, 在listen之后fork,多个子进程共享listen socket, 每个子进程都accept。 以前没见过这种模型,原创 2012-09-03 17:59:20 · 8666 阅读 · 3 评论 -
python模块runpy
http://www.python.org/dev/peps/pep-0366/http://www.python.org/dev/peps/pep-0338/The runpy module is used to locate and run Python modules without importing them first. Its main use is to imple原创 2012-08-27 23:49:17 · 10798 阅读 · 1 评论 -
random在多进程下的奇怪表现
tornado源码process.py fork_process函数功能是根据cpu数等来启动多个进程, 使用得是os.fork, 但在子进程里,真正执行端口监听前调用了一个奇怪得函数_reseed_random,该函数实现如下:def _reseed_random(): if 'random' not in sys.modules: return import原创 2012-08-27 01:29:11 · 1189 阅读 · 0 评论 -
python string hash 函数
static longstring_hash(PyStringObject *a){ register Py_ssize_t len; register unsigned char *p; register long x; if (a->ob_shash != -1) return a->ob_shash; len = Py_SIZE(转载 2012-02-03 15:09:19 · 11310 阅读 · 1 评论 -
杂记
最近事情比较多,都没时间来写点东西了。这段时间除了项目压力比较大之外,也翻看了不少代码和博客等等, 虽然感觉接触了很大得知识量,但一下子还消化不了。看得一些东西虽有所得也没形成系统得知识储备,趁着端午稍有空闲记录一下。python:weakref : python weakref模块允许程序员创建弱引用的对象弱引用对象是指一个比较弱得引用不足以让对象一直存在,垃圾回收器可以自由销毁和回收原创 2012-06-23 19:14:19 · 2730 阅读 · 0 评论 -
django里面一些小细节
django源代码非常多,框架比较大,以我水平要分析一下还是比较吃力得,能看懂就不错了,要讲出来并且讲得比较清楚就更难了。所以先从小处入手,一点点看django得细节。1. 信用卡验证算法-luhn算法。in django/utils/checksums.py代码比较简单LUHN_ODD_LOOKUP = (0, 2, 4, 6, 8, 1, 3, 5, 7, 9) # sum原创 2012-05-26 23:28:55 · 4142 阅读 · 0 评论 -
小程序几道
将字符串中空格长度大于1的空格变成一个空格, 时间复杂度O(N), 空间复杂度o(N)def test1(): sr = 'abcd abcde abcd dd abcd 123' sl = list(sr) st = False i=j=0 for x in sr: if x != ' '原创 2012-03-31 16:13:40 · 978 阅读 · 0 评论 -
k-mean算法实现
k-means 算法的工作过程说明如下: 初始化:聚类数k,初始聚类中心x,迭代次数或者收敛条件。 首先,从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类; 然后,再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值); 再次,不断重复上面的过程直到满足原创 2012-05-31 23:30:45 · 1699 阅读 · 0 评论 -
python 尾递归
网上有篇搞笑文 python 程序员进化 http://coolshell.cn/articles/2082.html ,对那个尾递归产生了兴趣。尾递归是指以迭代计算过程执行递归定义的语句,在python等语言中一般都是需要while, do, for这样的特殊语法。而 http://code.activestate.com/recipes/474088/ 有人实现了一个不需要这些语句的pyt原创 2012-05-07 17:06:49 · 1335 阅读 · 0 评论 -
Descriptor 指南
http://docs.python.org/2/howto/descriptor.htmlAbstractDefinition and Introduction通常来说, descriptor 是一种绑定着特殊行为属性的对象, 在访问它时行为被descriptor协议定义的方法所重载。这些方法是__get__, __set__ 和__delete__。 如果对象定义了翻译 2012-12-07 00:36:22 · 1347 阅读 · 0 评论 -
可传参或不传参的decorator
项目中有个需求, 使用了postgres的多个schema,所以需要来回切换,希望有这样一个decorator:@useSchema #使用默认schemadef operator_db(): pass@useSchema(schema) #使用指定schemadef operator_db(): pass看了下django.db.transaction的commi原创 2012-12-18 21:00:40 · 1078 阅读 · 0 评论 -
Python字符串的encode与decode
<br />转自:http://ipie.blogbus.com/logs/19379694.html<br /> <br />首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。 <br />decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码原创 2010-08-10 12:35:00 · 669 阅读 · 0 评论 -
生成全局唯一Id
生成全局唯一Id参考了: http://www.cnblogs.com/heyuquan/p/global-guid-identity-maxId.htmlGUIDimport uuiduuid.uuid1()优点: 确保唯一, 速度快缺点: 太长, 不友好, 不好索引数据库唯一索引时间戳加上随机数,然后通过数据库做唯一性校验原创 2013-09-29 00:38:01 · 7885 阅读 · 0 评论 -
gensim试用
gensim试用gensim: http://radimrehurek.com/gensim/index.htmlGensim is a free Python framework designed to automatically extract semantic topics from documents, as efficiently (computer-wise) and原创 2013-08-28 12:22:14 · 24335 阅读 · 6 评论 -
使用scrapy爬取flickr上某人照片
flickr免费帐号坑爹的只有200张照片的限额,用用就到限制了,准备换个相册。可上面的照片一个一个下下来就麻烦了,正好想用用scrapy,现学现卖,写了一个。代码在https://github.com/largetalk/flickr_photo_crawl使用命令是: scrapy crawl flickr -a username=largetalk -o scraped_原创 2013-05-15 20:41:23 · 2949 阅读 · 0 评论 -
datrie中文支持不够?
要找一个trie的python包,希望性能不错,支持中文。pytrie是python实现,而且是基于hash数据结构的,先pass,找了下,发现datrie , 看起来是不错, C实现的 double array trie数据结构,应该可以的,用上才发现有点问题,我也不清楚是用的不对,还是其他原因。上点测试代码看看,有用过的请指点一下。先看看英文的:#coding:utf-8imp原创 2013-07-01 23:51:24 · 6022 阅读 · 2 评论 -
python源码查找子串
首先找到string.find定义的地方, 在Objects/stringobject.c:static PyObject *string_find(PyStringObject *self, PyObject *args){ Py_ssize_t result = string_find_internal(self, args, +1); if (result ==原创 2012-02-07 13:28:35 · 2260 阅读 · 3 评论 -
merge json (incomplete)
from pprint import pprinta = { "_types" : [ "InterimResponseHistory" ], "uptime" : "2013-04-26T06:16:06.638Z", "permission_id" : "w131", "_cls"原创 2013-04-27 14:47:30 · 1208 阅读 · 0 评论 -
selenium试用
作为一个小公司的程序员命有点苦阿,啥都要自己作。最近网站有个文件下载功能需要测试,文件下载先需要登录,而且下载的url是计算出来的,所以手工方式测试太累了,只能用程序来实现了。虽然我知道用urllib2和cookielib能非常简单的解决这个问题,但看见selenium特别好玩,在界面上能自动的操作非常酷哈,就用selenium来解决这个问题了。先是安装selenium:pip ins原创 2013-02-28 14:32:16 · 1585 阅读 · 0 评论 -
关于Sentry
1. Sentry介绍及使用Sentry is a realtime event logging and aggregation platform. At its core it specializes in monitoring errors and extracting all the information needed to do a proper post-mortem wi原创 2013-03-06 10:18:12 · 22690 阅读 · 3 评论 -
sys 模块
sys.excepthook 未捕获异常处理的顶层函数import sysdef new_hook(t, v, tb): print 'in new hook' return sys.__excepthook__(t, v, tb)sys.excepthook = new_hookraise ValueError('asdfasdfa')sys.dis原创 2013-01-30 23:06:12 · 7227 阅读 · 0 评论 -
python builtin keyword: property
该文章有误, 请google python descriptor##################################################################################property 这个东西用起来还是很简单得,见 http://docs.python.org/library/functions.html#property, 两原创 2012-07-11 22:50:57 · 1208 阅读 · 0 评论 -
beautiful python
使用短短20几行代码实现一个单词拼写纠正程序,python确实太漂亮了import re, collectionsdef words(text): return re.findall('[a-z]+', text.lower()) def train(features): model = collections.defaultdict(lambda: 1) for f转载 2012-04-18 23:44:38 · 1422 阅读 · 3 评论 -
django网站部署
经过几个月得拖拖拉拉,项目终于上线了,项目本身没什么出彩得地方,那就说说整个项目得架构和部署吧项目是个常见得OLTP(也叫CURD)项目了,使用django + mysql, mysql使用了现在正火得percona,前面用了些memcahced,cache了首页和一些template、model,感觉需要一个透明缓存框架了,不然很多代码要重复了,像很多model得cache代码都是这样的:原创 2012-04-13 23:09:27 · 6045 阅读 · 0 评论 -
twisted实现udp广播聊天
刚翻看twisted udp, 看到udp广播那块,就想用这个做局域网聊天很简单得,然后查了下twisted 线程怎么弄, 掺和在一起,没想到能运行, nicefrom twisted.internet.protocol import DatagramProtocolfrom twisted.internet import reactorimport osclass Multi原创 2012-04-11 00:09:52 · 2971 阅读 · 2 评论 -
python with用法
python中with可以明显改进代码友好度,比如:with open('a.txt') as f: print f.readlines()为了我们自己的类也可以使用with, 只要给这个类增加两个函数__enter__, __exit__即可:>>> class A: def __enter__(self): print 'in enter' def __exit__原创 2011-10-27 13:28:04 · 86174 阅读 · 5 评论 -
bash和python中得颜色
在bash中想使输出得字符串有颜色,或者高亮某些字符,这就需要在输出得字符中插入一些转义字符,如echo -e "\e[1;31mabc\e[0m"就会高亮输出abcbash中\e[x;ym是设置某些属性, \e[0m关闭所有属性,\e也可以用\033来代替上面例子中x是1表示高亮,x是0表示不高亮, y是31表示前景红色,41表示背景红, 其实,十位3和4表示前后背景,个位0-7原创 2011-11-15 21:08:15 · 2577 阅读 · 0 评论 -
python itertools模块学习
一直对itertools怀有敬畏之心,其实会了就还好了,that's nothing这里的迭代器最主要得特点就是lazy,和stl里面得迭代器还是不一样得,最明显得好处就是节省内存了。顾名思义,itertools得函数返回得都是迭代器,为简单起事,下面就不专门说明了count(p,q) 返回p, p+q, p+2*q, ....cycle(p) 返回 p[0], p[1]原创 2011-10-25 22:09:04 · 9665 阅读 · 0 评论 -
python yield 另外一种用法
In [6]: def return_non(): print '-----------' ...: while True: ...: print '##############' ...: x = yield ...: print x ...: print '%%%%%%%%%%%%'原创 2011-10-21 16:15:38 · 1251 阅读 · 0 评论 -
python与ruby的问题
在python中怎么一行实现循环执行语句,就像ruby中的 100.times { p 'xxxxxx' }这样的语句,想了一会好像没有想法ps: 脑袋僵化了,这个其实很简单嘛for i in range(100): print 'xxxxx'原创 2011-08-03 22:28:48 · 525 阅读 · 0 评论 -
python 库学习
今天学习了几个pythonku1. multiprocessimport os, timefrom multiprocessing import *def test(x): print current_process().pid, x time.原创 2011-09-26 15:47:21 · 1035 阅读 · 0 评论 -
python metaclass
学习python这么久对python的metaclass还是一知半解,网上找了找,发现stackoverflow太强大了: http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python这个回原创 2011-09-05 13:56:30 · 2061 阅读 · 0 评论 -
An introduction of Messagepack
aiomsgView more presentations orUpload your own.原创 2011-08-03 23:55:30 · 588 阅读 · 0 评论 -
各种序列化库的体验
这里只用python来分析说明。python自带的两个cPickle, marshal我用过或尝试过的包括simplejson, AMF, protoBuf, MessagePack就这些来分析比较一下吧。import timeimport cPickleimport sim原创 2011-07-21 01:07:05 · 2692 阅读 · 1 评论 -
python partial function
刚看到haskell的higher order function 偏函数那一节, 想到python也有这东西, 知道但没看过,就看看大致的实现是这样的:def partial(func, *args, **keywords): def newfunc(*fargs, **原创 2011-07-17 16:47:46 · 2822 阅读 · 0 评论 -
python quirk
import timedef fun(x=time.time()): print 'in fun', xprint time.time()time.sleep(3)print time.time()fun()fun(time.time()) print result is:1304556761.251304556764.25in fun 1304556761.25in fun 1304556764.25原创 2011-05-05 08:56:00 · 870 阅读 · 0 评论