在python中复制大型二进制文件时系统挂起

2024-09-29 00:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个实用软件来操作文件复制过程Python。每一个一切正常,但当我开始复制任何大于2GB的文件时,整个系统就会挂起。在我看来,这可能是内存泄漏问题。在

我试过:

  • 使用Shutil模块复制它
  • 通过复制字节块使用延迟操作
  • 逐行复制文件数据
  • 使用Fileinput模块
  • 调整缓冲器百万次
  • 用C编写拷贝文件部分,然后用python对其进行扩展。在

……但这些都没用。在

以下是指向我的File Script和我的GUI Script的链接:

我用的是带2GB内存的Windows7。在

谁能帮忙吗?在


Tags: 模块文件数据内存字节过程系统script
2条回答

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

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

因为这可能需要很长时间,所以您应该将它放在与GUI不同的线程中,否则GUI将显示为挂起。以下是wxPython关于该主题的几个链接:

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

  • 使用多处理或多线程
  • 将文件拆分为块
  • 使用python dbm存储哪个块属于哪个文件名、文件路径和块偏移量(对于文件.seek功能)
  • 为读写块创建队列

相关问题 更多 >