我创建了一个实用程序软件,用于在 python 中操作文件复制过程。一切都很好,但是当我开始复制任何大于 2 Gb 的文件时,整个系统都会挂起。在我看来,这可能是内存泄漏问题。
我试过了:
- 使用 Shutil 模块复制它
- 通过复制字节块使用惰性操作
- 逐行复制文件数据
- 使用文件输入模块
- 调整 Buffer 百万次
- 用 C 编写复制文件部分,然后用 python 扩展它。
...但这些都没有奏效。
我正在使用具有 2 Gb RAM 的 Windows 7。
有人可以帮忙吗?
由于复制大于内存的文件时只有 2 GB 的内存,因此会导致问题。不要将整个文件加载到内存中。相反,我会做类似的事情:
with open(myLargeFile) as f:
with open(myOtherLargeFile, "w") as fo:
for line in f:
fo.write(line)
由于这可能需要很长时间,因此您应该将其放入 GUI 之外的单独线程中,否则 GUI 将出现挂起。这里有几个关于 wxPython 主题的链接:
解决这个问题的好方法是: