Python中文
首页
教程
问答
标签
搜索
登录
注册
readinto()替换?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>在Python中使用直接方法复制文件通常如下所示:</p> <pre><code>def copyfileobj(fsrc, fdst, length=16*1024): """copy data from file-like object fsrc to file-like object fdst""" while 1: buf = fsrc.read(length) if not buf: break fdst.write(buf) </code></pre> <p>(此代码段来自舒蒂尔.shutpy顺便说一下)。在</p> <p>不幸的是,在我的特殊用例中(涉及线程和非常大的缓冲区)[Italics part added later]</em>中,这有缺点。首先,它意味着每次调用read()时都会分配一个新的内存块,当buf在下一次迭代中被覆盖时,这个内存被释放,只是为了同样的目的再次分配新内存。这会减慢整个进程,并给主机带来不必要的负载。在</p> <p>为了避免这种情况,我使用文件.readinto()方法,不幸的是,该方法被记录为已弃用且“不使用”:</p> ^{pr2}$ <p>我的解决方案可行,但也有两个缺点:第一,不使用readinto()。它可能会消失(文档上说)。第二,使用readinto()时,我无法决定要读入缓冲区的字节数buffer.t文件()我无法决定要写多少,因此最后一个块的特殊情况很麻烦(这也是不必要的开销)。在</p> <p>我看过数组.array.fromfile(),但它不能用于读取“全部存在”(读取,然后抛出eoferor,并且不分发已处理项目的数量)。也不能解决特殊情况下的收尾问题。在</p> <p>有没有合适的方法来做我想做的事?也许我只是忽略了一个简单的缓冲类或类似的类,它可以满足我的需要。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>普通的Python代码不需要这样的调整-但是如果您真的需要所有的性能调整来从Python代码内部读取文件(如,您正在重写您编写的一些服务器coe,并且已经在性能或内存使用方面起作用)我宁愿直接使用ctypes调用操作系统,这样就可以让一个复制执行得尽可能低。在</p> <p>在您的情况下,简单地将“cp”可执行文件称为一个外部进程甚至可能不那么困难(它将为您充分利用所有操作系统和文件系统级别的优化)。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何将Python中的列表复制到给定的目标中?
10 回答
如何将python中的列表插入SQL表
10 回答
如何将python中的列表转换为numpy数组以放入十位
4 回答
如何将python中的列表输入javascript?
6 回答
如何将python中的列表返回给dag?
3 回答
如何将Python中的列表项重新排列成成对的元组/列表?
10 回答
如何将Python中的初始化对象序列化为XML?
7 回答
如何将python中的十进制字符串转换为数字?
7 回答
如何将Python中的原始输入文本转换为Tkinter中的标签?
6 回答
如何将python中的反斜杠命令转换为在Linux上运行
5 回答
如何将python中的命令行参数转换为字典?
6 回答
如何将python中的图像值传递到kivy中的kv文件?
6 回答
如何将Python中的图像数组(枕头对象)上传到Google云
2 回答
如何将Python中的图像编码为Base64?
8 回答
如何将python中的图像调整为灰度低分辨率,如MNIST时尚数据?
10 回答
如何将python中的多个html输出保存到单个文件(或多个)中?
6 回答
如何将Python中的多个ifelse语句重构为一个函数?
1 回答
如何将Python中的多处理与Django结合使用,从xml文件创建数千个模型实例?
1 回答
如何将python中的多级API响应转换为dataframe
7 回答
如何将python中的多线程编程模型转换为异步/等待模型?
2 回答