何时使用 StringIO,而不是连接字符串列表?

2024-03-07

使用 StringIO 作为字符串缓冲区比使用列表作为缓冲区慢。

什么时候使用StringIO?

from io import StringIO


def meth1(string):
    a = []
    for i in range(100):
        a.append(string)
    return ''.join(a)

def meth2(string):
    a = StringIO()
    for i in range(100):
        a.write(string)
    return a.getvalue()


if __name__ == '__main__':
    from timeit import Timer
    string = "This is test string"
    print(Timer("meth1(string)", "from __main__ import meth1, string").timeit())
    print(Timer("meth2(string)", "from __main__ import meth2, string").timeit())

Results:

16.7872819901
18.7160351276

StringIO 的主要优点是它可以在需要文件的地方使用。例如,你可以这样做(对于 Python 2):

import sys
import StringIO

out = StringIO.StringIO()
sys.stdout = out
print "hi, I'm going out"
sys.stdout = sys.__stdout__
print out.getvalue()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时使用 StringIO,而不是连接字符串列表? 的相关文章

  • Mac OS 上的诗歌安装失败,显示“should_use_symlinks”

    我正在尝试使用以下命令安装诗歌 curl sSL https install python poetry org python3 但它失败了 但有以下例外 例外 此版本的 python 无法在不使用符号链接的情况下创建 venvs 下面是详
  • scipy 将一个稀疏矩阵的所有行附加到另一个稀疏矩阵

    我有一个 numpy 矩阵 想在其中附加另一个矩阵 这两个矩阵的形状为 m1 shape 2777 5902 m2 shape 695 5902 我想将 m2 附加到 m1 以便新矩阵的形状为 m new shape 3472 5902 当
  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 为什么删除临时文件时出现WindowsError?

    我创建了一个临时文件 向创建的文件添加了一些数据 已保存 然后尝试将其删除 但我越来越WindowsError 编辑后我已关闭该文件 如何检查哪个其他进程正在访问该文件 C Documents and Settings Administra
  • 如何在Python中同时运行两只乌龟?

    我试图让两只乌龟一起移动 而不是一只接着另一只移动 例如 a turtle Turtle b turtle Turtle a forward 100 b forward 100 但这只能让他们一前一后地移动 有没有办法让它们同时移动 有没有
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 没有名为 StringIO 的模块

    我有Python 3 6 我想从另一个名为 run py 的 python 文件执行名为 operation py 的 python 文件 In operation py I do from cStringIO import StringI
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • Gspread如何复制sheet

    在 Stackoverflow 上进行谷歌搜索和搜索后 我想我找不到有关如何复制现有工作表 现有模板工作表 并将其保存到另一个工作表中的指南 根据文档 有重复表 https gspread readthedocs io en latest
  • Django 的 request.FILES 出现 UnicodeDecodeError

    我在视图调用中有以下代码 def view request body u for filename f in request FILES items body body Filename filename n f read n 在某些情况下
  • Python新式类和__subclasses__函数

    有人可以向我解释为什么这有效 在 Python 2 5 中 class Foo object pass class Bar Foo pass print Foo subclasses 但这不是 class Foo pass class Ba
  • Tensorflow 与 Keras 的兼容性

    我正在使用 Python 3 6 和 Tensorflow 2 0 并且有一些 Keras 代码 import keras from keras models import Sequential from keras layers impo
  • SMTP_SSL SSLError: [SSL: UNKNOWN_PROTOCOL] 未知协议 (_ssl.c:590)

    此问题与 smtplib 的 SMTP SSL 连接有关 当与 SMTP 无 ssl 连接时 它正在工作 在 SMTP SSL 中尝试相同的主机和端口时 出现错误 该错误仅基于主机 gmail 设置也工作正常 请检查下面的示例 如果 Out
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • 动态过滤 pandas 数据框

    我正在尝试使用三列的阈值来过滤 pandas 数据框 import pandas as pd df pd DataFrame A 6 2 10 5 3 B 2 5 3 2 6 C 5 2 1 8 2 df df loc df A gt 0
  • python 线程安全可变对象复制

    Is 蟒蛇的copy http docs python org 2 library copy html模块线程安全吗 如果不是 我应该如何在 python 中以线程安全的方式复制 deepcopy 可变对象 蟒蛇的GIL http en w
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk
  • 多个对象以某种方式相互干扰[原始版本]

    我有一个神经网络 NN 当应用于单个数据集时 它可以完美地工作 但是 如果我想在一组数据上运行神经网络 然后创建一个新的神经网络实例以在不同的数据集 甚至再次同一组数据 上运行 那么新实例将产生完全错误的预测 例如 对 XOR 模式进行训练

随机推荐

  • ClassLoader getResourceAsStream 返回 null

    我的项目目录结构 在Eclipse中 MyProject src gt source directory on Eclipse s classpath buildpath com me myapp Driver myconfig txt I
  • Django - 将参数传递给内联表单集

    我在用inlineformset factory使用中介考勤模型为客户端和会话之间的多对多关系创建字段 我的视图文件中有以下内容 AttendanceFormset inlineformset factory Session Attenda
  • Canvas.drawText() 不会在 Android 上呈现大表情符号

    Canvas drawText 不渲染表情符号在 Android 上超过一定的字体大小 Correct render at somewhere below 256 px Incorrect render at above 256 px 有一
  • 如何从 MVC/Razor 页面将参数传递到顶级服务器端 blazor 组件?

    将 Blazor 组件添加到现有 MVC 或 Razor 页面时 能够将参数传递到 Blazor 组件中非常有用 例如将 MVC 页面的 URL 中的参数 例如 ID 传递到组件上 直到 Core 3 Preview 9 服务器渲染组件才可
  • 快速添加按钮到SCNNode

    我正在研究 ARKit 和图像检测 现在我有一个应用程序可以检测图像并将平面放置在屏幕上检测到的对象所在的位置 如何添加可点击的元素 例如飞机上的按钮 我想在每个检测到的对象上都有一个单击事件 这就是我的渲染器函数的样子 func rend
  • ASP.NET MVC 2:查看子文件夹?

    在我看来 当我使用视图和控制器时 控制器仅处理各自文件夹的第一级 Controllers MembersController Views Members 控制器应该如何处理子文件夹 Views Members Business 控制器isn
  • Mono 中的 P/Invoke

    什么是当前状态 of Mono http www mono project com 的平台调用实现Linux and on Solaris 工作 可用且稳定 它经过了充分的测试 因为相当多的 mono 自己的低级功能必须通过它编组到底层操作
  • 为什么日期之间的减法会返回 Rational 类型?

    我正在尝试对日期执行减法运算 date sent Date parse 2013 01 01 gt Tue 01 Jan 2013 date now Date today gt Wed 04 Sep 2013 days date now d
  • PHP 中的 undefined 相当于什么?

    我的假设随后是基于假设的问题 JavaScript 有null and undefined 您可以将变量设置为null 表示它没有值 或者您可以将其设置为undefined 这意味着不知道它是否有值 它只是根本没有设置 PHP has nu
  • akka-http 具有多种路由配置

    快速背景 我正在通过一些示例学习 Akka HTTP 堆栈来创建新的 REST 项目 完全非 UI 我一直在使用和增强Akka HTTP 微服务示例 http www typesafe com activator template akka
  • Java / 重构 switch case

    我正在尝试重构下一个案例 class Gen public void startClick A a B b List
  • Ubuntu 上的 Giza++ 有正确的安装指南吗?

    我看到适用于 Giza 的正确安装指南 但不适用于 Giza 安装前者的说明 可在此处找到 http giza sourceforge net documentation installation html http giza source
  • 接口和抽象类中的 Xml 属性

    今天发现了一件让我很困惑的事情 1 如果我有这个 public interface INamed XmlAttribute string Name get set public class Named INamed public strin
  • 人名中允许使用哪些字符? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Git / 分离 HEAD,恢复工作吗?

    我对我认为是我的分支进行了数十次提交 然后检查了另一个分支 愿意回到我最初的分支 我没有找到我更新的代码 在控制台中查看我的历史记录后 我了解到我在一个独立的分支工作 是否有可能获得我在独立分支上完成的工作 是的 您可以使用重新记录 尝试g
  • date() 方法,“遇到格式不正确的数值”不希望格式化 $_POST 中传递的日期

    不幸的是我不能使用DateTime 因为该项目所在的服务器正在运行 PHP v 5 2 有问题的行 aptnDate2 date Y m d POST nextAppointmentDate 抛出以下错误 Notice A non well
  • 如何同步线上线下数据库

    我有一个Web应用程序为我的客户提供一些信息 我有另一个版本 windows that exactly work same as web application 这是因为 Web 连接可能会丢失几个小时 而此时用户将使用该应用程序 我想知道
  • Jenkins:在升级构建中使用存档的工件

    我已经将一个工件归档为构建的最后一步 它可以如下所示使用 https xxx ci cloudbees com job xxx 52 artifact target xxx 1 2 1 SNAPSHOT r8304 20130807 150
  • Unix shell 命令的一般语法是什么?

    特别是 为什么有时某些命令的选项前面有一个 标志 有时由 sign 例如 sort f sort nr sort 4n sort 3nr 如今 POSIX 标准使用getopt http pubs opengroup org onlinep
  • 何时使用 StringIO,而不是连接字符串列表?

    使用 StringIO 作为字符串缓冲区比使用列表作为缓冲区慢 什么时候使用StringIO from io import StringIO def meth1 string a for i in range 100 a append st