-1

我创建了一个实用程序软件,用于在 python 中操作文件复制过程。一切都很好,但是当我开始复制任何大于 2 Gb 的文件时,整个系统都会挂起。在我看来,这可能是内存泄漏问题。

我试过了:

  • 使用 Shutil 模块复制它
  • 通过复制字节块使用惰性操作
  • 逐行复制文件数据
  • 使用文件输入模块
  • 调整 Buffer 百万次
  • 用 C 编写复制文件部分,然后用 python 扩展它。

...但这些都没有奏效。

以下是我的文件脚本和我的GUI 脚本的链接:

我正在使用具有 2 Gb RAM 的 Windows 7。

有人可以帮忙吗?

4

2 回答 2

1

由于复制大于内存的文件时只有 2 GB 的内存,因此会导致问题。不要将整个文件加载到内存中。相反,我会做类似的事情:

with open(myLargeFile) as f:
   with open(myOtherLargeFile, "w") as fo:
   for line in f:            
      fo.write(line)

由于这可能需要很长时间,因此您应该将其放入 GUI 之外的单独线程中,否则 GUI 将出现挂起。这里有几个关于 wxPython 主题的链接:

于 2012-08-15T13:37:30.907 回答
0

解决这个问题的好方法是:

  • 使用多处理或多线程
  • 将文件拆分成块
  • 使用 python dbm 存储哪个块属于哪个文件名、文件路径和块偏移量(用于 file.seek 函数)
  • 为读写块创建队列
于 2012-08-15T07:49:17.233 回答