问题标签 [cstringio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python - Pyramid 和 matplotlib - 不能有多个视图输出 SVG?
我正在开发一个 Python Pyramid 应用程序,我打算在其中创建多个 SVG 图像来使用饼图绘制统计数据。在我的测试中,我发现一个 SVG 视图可以正常工作,并且只要我添加第二个 SVG 输出视图,并且加载第二个 SVG 图像(SVG 图像加载的顺序无关紧要),无论是直接通过其视图还是通过引用此视图的另一个视图,SVG 图像在任何其他进一步调用中“组合”以加载 SVG 文件。这似乎是 Python 堆栈中的一个错误,因为它似乎没有正确清除内存(主要是在多个 SVG 文件的情况下,请参阅下面的更多详细信息)。下面还要注意,在加载足够多的图像/页面后会遇到 TclError。
由于我在具有更多视图的更详细的应用程序中使用 SVG,因此我在最小化/简化的应用程序中复制它以表明它不是我正在做的额外事情,并且此代码是直接从 Pyramid alchemy模板和数据库生成的不涉及通话。该数据库在我的更多详细信息应用程序中得到了积极利用。此应用程序只有 3 个视图,其中第一个视图是原始模板的一部分。我还添加了 DEBUG 日志记录,以明确没有迹象表明存在对其他 SVG 视图的任何内部调用。
一些视图代码基于Matplotlib svg 作为字符串,而不是主要用于StringIO
. 请注意,由于需要饼图,这就是我的代码与引用问题中的代码不同的主要原因。我发现无论我使用StringIO
还是cStringIO
. 在我的代码中,我正在使用cStringIO
.
完整的应用程序代码位于:https ://github.com/danielpronych/pyramidapp
PyPlot 文档:: pyplot api
更新:来自第一个 SVG 视图的代码(图形句柄和关闭命令):
此代码的步骤:
- 加载http://localhost:6543/test.svg
- 加载http://localhost:6543/test2.svg
- 再次加载 (1) 或 (2)。将
pserve
在命令窗口中没有任何迹象的情况下连续“旋转”为什么。
注意:使用此代码加载相同的 SVG 视图 3 次也具有与上述步骤相同的结果,而下面的代码不会发生。
另请注意,pyplot pie确实有回报;然而,它本身并不是一个“手柄”。
pserve
即使等待超过一分钟(特别是在执行上述步骤之后),窗口也不响应 Control+C 命令。
来自第一个 SVG 视图的代码(原始,以下步骤来自此代码):
Python 版本: Python 2.7.5
Python 包配置(仅限主包)
- 金字塔-1.6a1-py2.7
- matplotlib-1.4.3-py2.7-win32
重现步骤:
- 保护金字塔应用程序。
命令:pserve development.ini --reload
请注意,这可以正常工作
请注意,这会将两个 SVG 文件“组合”在一起
请注意,这与 test2.svg 完全相同,具有正确的标题,因为它们的长度也相似,现在图像也在此视图中合并
- 重新托管应用程序并仅加载http://localhost:6543/test2.svg
请注意,这适用于首次加载,因为此视图是在 test.svg 这次之前加载的
使用 Control+C 终止 pserve 进程时的跟踪日志
重要提示:加载足够多的 SVG 图像后,会遇到以下情况:
目前解决此问题的唯一方法是重新启动pserve
。还要注意,my_view
只要 SVG 图像未被此类视图引用或使用,视图(例如加载)就可以正确加载。
另一个重要的注意事项,只要只加载一个 SVG 文件,即http://localhost:6543/test.svg,整个时间pserve
似乎可以无限次重新加载/刷新图像而没有任何明显的问题,或遇到以下情况:
更新(2015 年 9 月):我希望看到 Sergey 的进一步更新,因为他建议的解决方案一开始似乎确实有所帮助;但是,他的解决方案并没有解决这个问题,因为即使我等待了相当长的时间也没有发生任何事情,我发现只有我的解决方案才能真正解决这个问题。最后,需要明确的是,我的解决方案适用于基于 Web 的实现和批处理,因为这个问题也出现在批处理中。
python - 当文件小于 1kByte 时,cStringIO.StringO 无法保存上传的文件流
我借用了这段代码来将文件流保存到磁盘,除了文件大小小于 1kb 时,它都可以工作。我收到此错误:
AttributeError:“cStringIO.StringO”对象没有属性“名称”
那么我该怎么做才能确保 cStringIO.StringO 处理上传的小文件呢?
python - 多线程 cstringio 在 ubuntu 14.04 上慢 17%
我正在运行以下程序:
在具有完全相同硬件的机器上,但一台运行 ubuntu 10.04,另一台运行 14.04。我观察到 10.04 需要 1409.54 秒,而 14.04 需要 1656.81 秒,显示 14.04 性能下降 17%。有任何想法吗?
python - PYVISA 中的 ENUM 模块和 cStringIO 模块
我有一些麻烦要解决。我将 Python 3.2 与pyvisa
Python 3.2 32 位一起使用。当我使用:
它显示:
但是当我使用:
我得到:
我只想使用pyvisa
GPIB 的 Agilent 33250a。
python - 比 StringIO 和 cStringIO 慢的真实文件对象?
StringIO
在其代码中有以下注释:
“真实文件通常更快”这一行对我来说似乎很奇怪:写入磁盘怎么能胜过写入内存?我尝试分析这些不同的案例并得到与这些文档相矛盾的结果,以及这个问题的答案。这另一个问题确实解释了为什么cStringIO在某些情况下会变慢,尽管我在这里没有做任何连接。测试将给定数量的数据写入文件,然后寻找开头并将其读回。在“新”测试中,我每次都创建一个新对象,而在“相同”测试中,我为每次重复截断并重用相同的对象,以排除开销来源。这种开销对于使用具有小数据大小但不是大数据的临时文件很重要。
代码在这里。
这两种StringIO
实现相当具有可比性,尽管cStringIO
对于大数据量显着减慢了速度。但是tempfile.TemporaryFile
总是用最慢的3倍StringIO
。
python - tempfile.TemporaryFile 与 StringIO
我写了一个小基准,比较了ZOCache的不同字符串连接方法。
所以这里看起来 tempfile.TemporaryFile 比其他任何东西都快:
我一直在使用的基准代码:
编辑 Python3.4.3 + io.BytesIO
io.BytesIO 的新来源:
每个平台都是这样吗?如果是这样,为什么?
编辑:具有固定基准(和固定代码)的结果:
python - 从 URL 读取图像,使用 misc.imread 返回扁平数组而不是彩色图像
我正在尝试从 URL 读取图像(由 Google 的静态地图 API 提供)。
图像在浏览器中显示正常。
但是当我尝试使用 misc.imread 将它加载到数组中时,它似乎最终成为一个二维数组(即扁平化,没有 RGB 颜色)。
这是我正在使用的代码(我隐藏了我的 API 密钥):
我所期望的是一个 3-d 形状数组 (278, 256, 3)。
也许它没有正确读取文件?
python - Python 捕获来自 powershell 的回复
下面的代码在手动输入时有效,但是当我运行 program.py 时没有打印。我的最终目标是从用户 pc 检索这些数据,以创建一种简单的方法来重新创建快捷方式....我的用户不知何故失去了他们哈哈
python - 对 StringIO、cStringIO 和 ByteIO 感到困惑
我已经用谷歌搜索并在 SO 上搜索这些缓冲区模块之间的区别。但是,我仍然不太了解,我认为我阅读的一些帖子已经过时了。
在 Python 2.7.11 中,我使用r = requests.get(url)
. 然后我将StringIO.StringIO(r.content)
,cStringIO.StringIO(r.content)
和传递io.BytesIO(r.content)
给了一个为解析内容而设计的函数。
这三种方法都可用。我的意思是,即使文件是二进制文件,使用StringIO
. 为什么?
另一件事是关于他们的效率。
如上图所示,cStringIO > StringIO > BytesIO
.
我发现有人提到io.BytesIO
总是制作一个新副本,这会花费更多时间。但也有一些帖子提到,这在后来的 Python 版本中已修复。
IO
那么,任何人都可以在最新的 Python 2.x 和 3.x 中对这些 s 进行彻底的比较吗?
我找到的一些参考资料:
- https://trac.edgewall.org/ticket/12046
io.StringIO 需要一个 unicode 字符串。io.BytesIO 需要一个字节字符串。StringIO.StringIO 允许 unicode 或字节字符串。cStringIO.StringIO 需要一个被编码为字节字符串的字符串。
但cStringIO.StringIO('abc')
不会引发任何错误。
https://review.openstack.org/#/c/286926/1
StringIO 类是错误的类,特别是考虑到子单元 v2 是二进制而不是字符串。
http://comments.gmane.org/gmane.comp.python.devel/148717
cStringIO.StringIO(b'data') 没有复制数据,而 io.BytesIO(b'data') 进行复制(即使以后没有修改数据)。
2014 年的这篇文章中有一个修复补丁。
- 此处未列出许多 SO 帖子。
这是 Eric 示例的 Python 2.7 结果
至于 2.7,cStringIO.StringIO
并且StringIO.StringIO
比io
.
python - 如何使用 Python Pillow 更改图像格式而不将其写入磁盘
我得到了从互联网上获得的枕头图像:
我想将它与 tesserocr 一起使用,但它不适用于 GIF 图像。
如果我将图像保存为 PNGimg.save("tmp.png")
并加载它,img = Image.open("tmp.png")
一切正常。
有没有办法在不写入磁盘的情况下进行这种转换?