【发布时间】:2013-09-16 00:14:47
【问题描述】:
我正在编写一些 python 代码,将不同点的大文件拼接在一起。我在 C 中做了类似的事情,我分配了一个 1MB 字符数组并将其用作读/写缓冲区。而且很简单:将 1MB 读入 char 数组,然后写出来。
但是对于 python,我假设它是不同的,每次我调用 size = 1M 的 read() 时,它都会分配一个 1M 长的字符串。希望当缓冲区超出范围时,我们会在下一次 gc 过程中释放它。
python 会以这种方式处理分配吗?如果是这样,常量分配/释放周期的计算成本是否很高?
我可以告诉 python 使用与 C 中相同的内存块吗?还是 python vm 足够聪明,可以自己做?
我想我的主要目标有点像 dd 在 python 中的实现。
【问题讨论】:
-
你在担心一些无关紧要的事情。 IO 慢,分配器快。在尝试优化使您的代码更复杂之前进行分析。
标签: python memory-management file-io