在python中复制大型二进制文件时,系统挂起
我已经用python创建了一个实用软件来操作文件复制过程。一切都很好,但是当我开始复制任何大于2GB的文件时,整个系统就会挂起。在我看来,这可能是一个内存泄漏问题 我试过:在python中复制大型二进制文件时,系统挂起,python,file-io,python-3.x,wxpython,Python,File Io,Python 3.x,Wxpython,我已经用python创建了一个实用软件来操作文件复制过程。一切都很好,但是当我开始复制任何大于2GB的文件时,整个系统就会挂起。在我看来,这可能是一个内存泄漏问题 我试过: 使用Shutil模块复制它 通过复制字节块使用惰性操作 逐行复制文件数据 使用文件输入模块 调整缓冲区百万次 用C编写复制文件部分,然后用python扩展它 ……但所有这些都不起作用 以下是指向我的和我的: 我使用的是内存为2GB的Windows7 有人能帮忙吗?解决这个问题的好方法是: 使用多处理或多线程 将文件分割
- 使用Shutil模块复制它
- 通过复制字节块使用惰性操作
- 逐行复制文件数据
- 使用文件输入模块
- 调整缓冲区百万次
- 用C编写复制文件部分,然后用python扩展它
有人能帮忙吗?解决这个问题的好方法是:
- 使用多处理或多线程
- 将文件分割成块
- 使用python dbm存储哪个区块属于哪个文件名、文件路径和区块偏移量(对于file.seek函数)
- 为读写块创建队列
with open(myLargeFile) as f:
with open(myOtherLargeFile, "w") as fo:
for line in f:
fo.write(line)
因为这可能需要很长时间,所以您应该将其放在GUI的单独线程中,否则GUI会挂起。以下是wxPython关于该主题的几个链接:
dbm
完全没有必要。简单地读写固定大小的块是所有必要的。@Daskwuff den我不明白为什么当我复制超过2 gb的文件时,我的系统会挂起…我在脚本中使用带缓冲区的固定大小的块…但不幸的是没有任何工作。。