multiprocessing.pool.MaybeEncodingError

multiprocessing.pool.MaybeEncodingError: Error sending result: '<multiprocessing.pool.ExceptionWithTraceback object at 0x000000000B5D6EC8>'. Reason: 'PicklingError("Can't pickle <class 'MemoryError'>: it's not the same object as builtins.MemoryError")'

出现上图问题,个人感觉应该是进程数开的太多,崩溃了;

可用以下方法解决:

 

    if not os.path.exists(finished_flag):
        annos = np.array(pandas.read_csv(luna_label))
        pool = Pool(4)     #进程数修改为具体的数值,可以改小一点儿
        if not os.path.exists(savepath):
            os.mkdir(savepath)
        for setidx in range(10):
            print('process subset', setidx)
            filelist = [f.split('.mhd')[0] for f in os.listdir(luna_data + 'subset' + str(setidx)) if
                        f.endswith('.mhd')]
            if not os.path.exists(savepath + 'subset' + str(setidx)):
                os.mkdir(savepath + 'subset' + str(setidx))
            partial_savenpy_luna = partial(savenpy_luna, annos=annos, filelist=filelist,
                                           luna_segment=luna_segment,
                                           luna_data=luna_data + 'subset' + str(setidx) + '/',
                                           savepath=savepath + 'subset' + str(setidx) + '/')
            N = len(filelist)
            #pool2 = pool(20)
            # savenpy(1)
            _ = pool.map(partial_savenpy_luna, range(N))
        pool.close()
        pool.join()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值