栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

对StringIO,cStringIO和ByteIO感到困惑

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对StringIO,cStringIO和ByteIO感到困惑

您应该同时使用python
2和3

io.StringIO
处理
unipre
对象以及
io.BytesIO
处理
bytes
对象,以实现前向兼容(这是3所提供的全部功能)。


这是一个更好的测试(针对python 2和3),其中不包括从numpy到

str
/的转换成本
bytes

import numpy as npimport stringb_data = np.random.choice(list(string.printable), size=1000000).tobytes()u_data = b_data.depre('ascii')u_data = u'u2603' + u_data[1:]  # add a non-ascii character

接着:

import io%timeit io.StringIO(u_data)%timeit io.StringIO(b_data)%timeit io.BytesIO(u_data)%timeit io.BytesIO(b_data)

在python 2中,您还可以测试:

import StringIO, cStringIO%timeit cStringIO.StringIO(u_data)%timeit cStringIO.StringIO(b_data)%timeit StringIO.StringIO(u_data)%timeit StringIO.StringIO(b_data)

其中一些会崩溃,抱怨非ASCII字符


Python 3.5结果:

>>> %timeit io.StringIO(u_data)100 loops, best of 3: 8.61 ms per loop>>> %timeit io.StringIO(b_data)TypeError: initial_value must be str or None, not bytes>>> %timeit io.BytesIO(u_data)TypeError: a bytes-like object is required, not 'str'>>> %timeit io.BytesIO(b_data)The slowest run took 6.79 times longer than the fastest. This could mean that an intermediate result is being cached1000000 loops, best of 3: 344 ns per loop

Python 2.7结果(在另一台机器上运行):

>>> %timeit io.StringIO(u_data)1000 loops, best of 3: 304 µs per loop>>> %timeit io.StringIO(b_data)TypeError: initial_value must be unipre or None, not str>>> %timeit io.BytesIO(u_data)TypeError: 'unipre' does not have the buffer interface>>> %timeit io.BytesIO(b_data)10000 loops, best of 3: 77.5 µs per loop>>> %timeit cStringIO.StringIO(u_data)UnipreEnpreError: 'ascii' prec cant enpre character u'u2603' in position 0: ordinal not in range(128)>>> %timeit cStringIO.StringIO(b_data)1000000 loops, best of 3: 448 ns per loop>>> %timeit StringIO.StringIO(u_data)1000000 loops, best of 3: 1.15 µs per loop>>> %timeit StringIO.StringIO(b_data)1000000 loops, best of 3: 1.19 µs per loop


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号