Json
发布时间:2022-04-22 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了除了cPickle,cjson外还有没有更高效点的序列化库了,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_32_0
@msgpack最快,而且是跨语言的,二进制,但只能打包简单的list,
Dict,int,
String,unicode,在memcache之类的
字符串协议里会有问题。
@H_975_2
@marshal其次,也是二进制的,可以打包大多数python对象,缺点同msgpack,另文档上说各版本的python实现会不一样,但我这测下
来三台机器分别是
stackless 2.6.5 2.7.2 python 2.6.2之间都没出现兼容问题
tnet
String速度第三,字符打包,可以完美
支持各种协议的后端,但有
一个致命的缺点就是
支持类型太少,比
如下面的@L_891_4
@mongo里出来的
unicode就无法打包。
以上三者速度差距很小很小。
bson,cPickle,json都很慢。。直接pass
cPickle_test used time 1.32382702827s
@H_975_2
@marshal_test used time 0.29
944396019s
@H_975_2
@msgpackb_test used time 0.2374
4893074s
#!/usr/bin/env Python
#coding=utf-8
'''
Created on Jul 13,2011
@author: apple
import time,
functools
import cPickle,marshal,tnet
String,bson,msgpack
import p
ymongo
data = p
ymongo.Connection().freeasker.question.find_one()
data.pop('_id')
def timeit(fun
C):
@
functools.wraps(fun
C)
def __do__(*args,
**wk):
start = time.time()
result= func(*args,
**wk)
print '
%s used time
%ss'%(func.
__name__,time.time()-start)
return result
return __do__
@timeit
def cPickle_test(c,data):
for i in
xrange(
C):
s = cPickle.dumps(data)
cPickle.loads(s)
def marshal_test(c,245)"> s = marsha
l.dumps(data)
marsha
l.loads(s)
def tnet
String_test(c,245)"> s = tnet
String.dumps(data)
tnet
String.loads(s)
def bson_test(c,245)"> s = bson.dumps(data)
bson.loads(s)
def msgpackb_test(c,245)"># packer = msgpack.Packer()
s = msgpack.packb(data)
msgpack.unpackb(s)
def msgpack_test(c,245)"> packer = msgpack.Packer()
s = packer.pack(data)
packer.unpack(s)
if
__name__ == '__main__':
count = 10000
data = p
ymongo.Connection().freeasker.question.find_one()
data.pop('_id')
cPickle_test(count,data)
marshal_test(count,245)"># tnet
String_test(count,245)"># bson_test(count,245)"># msgpack_test(count,245)"> msgpackb_test(count,data)
大佬总结
以上是大佬教程为你收集整理的除了cPickle,cjson外还有没有更高效点的序列化库了全部内容,希望文章能够帮你解决除了cPickle,cjson外还有没有更高效点的序列化库了所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。