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

在python中复制大型二进制文件时,系统挂起,python,file-io,python-3.x,wxpython,Python,File Io,Python 3.x,Wxpython,我已经用python创建了一个实用软件来操作文件复制过程。一切都很好,但是当我开始复制任何大于2GB的文件时,整个系统就会挂起。在我看来,这可能是一个内存泄漏问题 我试过: 使用Shutil模块复制它 通过复制字节块使用惰性操作 逐行复制文件数据 使用文件输入模块 调整缓冲区百万次 用C编写复制文件部分,然后用python扩展它 ……但所有这些都不起作用 以下是指向我的和我的: 我使用的是内存为2GB的Windows7 有人能帮忙吗?解决这个问题的好方法是: 使用多处理或多线程 将文件分割

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

我试过:

  • 使用Shutil模块复制它
  • 通过复制字节块使用惰性操作
  • 逐行复制文件数据
  • 使用文件输入模块
  • 调整缓冲区百万次
  • 用C编写复制文件部分,然后用python扩展它
……但所有这些都不起作用

以下是指向我的和我的:

我使用的是内存为2GB的Windows7


有人能帮忙吗?

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

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

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

with open(myLargeFile) as f:
   with open(myOtherLargeFile, "w") as fo:
   for line in f:            
      fo.write(line)
因为这可能需要很长时间,所以您应该将其放在GUI的单独线程中,否则GUI会挂起。以下是wxPython关于该主题的几个链接:


欢迎来到StackOverflow。我们鼓励您编写少量代码来重现您遇到的确切问题。如果没有这一点,社区很难帮助回答您的问题。还请注意,非常不鼓励在场外发布代码链接。您可以通过单击上面的“编辑”链接来编辑您的问题以更正这些内容。@Maulwurfn您可以链接吗?OP公司目前的个人资料没有显示任何其他问题,其中大部分都是拙劣的建议<代码>多处理(或线程)不会加快复制速度(事实上,它可能会减慢速度),而
dbm
完全没有必要。简单地读写固定大小的块是所有必要的。@Daskwuff den我不明白为什么当我复制超过2 gb的文件时,我的系统会挂起…我在脚本中使用带缓冲区的固定大小的块…但不幸的是没有任何工作。。