python 文件更新失败_在python中写入大文件时出现静默失败

我有一个程序,它使用cPickle来转储大(几GB)文件。对于较小的文件(它处理的最大文件是5.6GB),它似乎可以正常工作,但会自动失败(!)在更大的文件上。在

不确定是否相关,但我正在使用多处理在多个节点上同时生成和写入这些文件。我怀疑这个问题并不是(c)Pickle特有的,因为我在尝试使用h4py在HDF5中写出大文件时遇到过类似的问题。在

你知道会发生什么吗?在

一些附加信息:

在Linux系统上运行extm 4'。我应该有足够的内存(60 GB+120 GB交换。。。没有内存错误),每个进程都在一个单独的文件上工作。没有进程被杀死。。。我有一个循环,它在每次迭代中计算一个大文件并将其转储。如果文件太大,它就不会被转储,并且进程将继续循环的下一次迭代,而没有任何错误消息或任何其他指示出错的指示(除了丢失的文件)。在

下面是一个复制行为的最小样本:import numpy as np

import cPickle

import multiprocessing as mp

def test():

test = np.random.random(1000000000)

# test = np.random.random(10000) # this works

cPickle.dump(test, open('/home/ctw/tmp/test.pickle','w'), -1)

po = mp.Pool(1)

po.apply_async(test)

po.close()

结果是创建一个空文件。当我在多处理环境外运行此程序时,通常的结果是创建一个小(127B)文件并显示以下错误消息(使用多处理运行此文件时,我从未看到错误):

^{pr2}$

另一个更新:如果我使用0而不是-1作为协议,文件将被写入。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值