Python随手笔记(1)和使用库的一些提示

来源:互联网 发布:手机淘宝改评价怎么看 编辑:程序博客网 时间:2024/05/22 02:17
随手笔记

1.使用共享内存比Redis速度快很多,具体有多快,要快共享内存有多大(同时结合cpickle来加快速度)。
2.Queue没有pipe快。
3.set中的查找比list快一万倍(具体看数据多少,字典的速度直接秒杀它们),它们添加元素的速度是一样的(队列比他们慢很多)
4.cProfile可以监控函数的调用次数和使用时间,但是真心难用.至少没有timeit这个容易使用。
5.Queue传输数据并不会比Redis快多少,如果put和get次数过多,反而Queue更加慢。
6.内部排序使用sorted真心好用,sort是list支持的内建排序,稍微比sorted快一点点(其实没快多少).
7.对容器进行迭代的时候,千万别做任何插入或者删除操作。
8.set容器求交集比list容器求交集快一万倍(可以建议先将list转换成set,然后求交集,再转换回去)
9.多进程中使用multiprocessing比使用subprocess好用很多,因为能传递各种参数..
10.Twisted也会发生黏包,所以要做好心理准备
11.在python中使用单例,直接把模块当成单例就可以了.这个是纯天然的单例模式.


     27.关于字符串主要掌握joinsplit方法,其他方法需要的时候再去查询。
     28.需要排序的时候,请使用sorted,主要针对的对象时列表,字典等容器;使用方式分别有以下几种:
          1.对字典进行排序
               sorted(dict.iteritems(), key=itemgetter(int))
          2.多维list排序
               list = [[..],[...]]
               sorted(list, key=operator.itemgetter(int,int)) 其中两个int表示同时对两个字段进行排序
          3.字典中混合list排序
               dic= {key1:[...], key2:[...]}
               sorted(dict.iteritems(), key=lambda(k, v): operator.itemgetter(int)(v))
          4.list中混合字典排序
               list  = [{key:value, key1:value}, {key:value1, key1:value1}]
               sorted(list, key=operator.itemgetter(key[,key1]))
     29.使用copy.deepcopy进行深拷贝,默认下进行的所谓的赋值都是浅拷贝。
     30.要对容器里面数据进行统计的时候请使用collections.Counter(data)
     31.使用cpickle序列化来加速性能吧,速度极快的.主要有两种方式:(缺点不通用,不安全,没有原子性>
          1.序列化文件的操作:
               cpickle.dump(序列化对象,文件句柄,[协议版本])
               cpickle.load(文件句柄)
          2.序列化普通对象,并且返回序列化后的数据和解开的数据
               cpickle.dumps(序列化对象)
               cpickle.loads(数据)
     32.使用threading来编写多线程程序(但是要记住python里面GIL的存在),使用Queue让多线程通信变得更加安全。


     
0 0
原创粉丝点击