OSError: [Errno 4] Interrupted system call

本文详细解析了PyTorch中DataLoader迭代器在多进程环境下出现的OSError和socket.error异常,提供了一种修改multiprocessing.reduction模块的recv_handle函数以解决连接被拒绝的问题。
摘要由CSDN通过智能技术生成

######
加载数据出错:
/usr/lib/python2.7/multiprocessing/reduction.py", line 157, in rebuild_handle
    new_handle = recv_handle(conn)
  File "/usr/lib/python2.7/multiprocessing/reduction.py", line 83, in recv_handle
    return _multiprocessing.recvfd(conn.fileno())
OSError: [Errno 4] Interrupted system call
Exception socket.error: error(111, 'Connection refused') in <bound method DataLoaderIter.__del__ of <torch.utils.data.dataloader.DataLoaderIter object at 0x7f94f55bfc90>> ignored

 

参考https://github.com/pytorch/pytorch/issues/4220

######
解决方法:

打开文件
"/usr/lib/python2.7/multiprocessing/reduction.py"

把82行的函数recv_handle() 
#####
def recv_handle(conn):
    return _multiprocessing.recvfd(conn.fileno())
#####

改为如下内容
#####
def recv_handle(conn):
    while True:
        try:
            _fl_data = _multiprocessing.recvfd(conn.fileno())
            break
        except OSError, num:
            print num
            if num==4:
                continue
    return _fl_data
#####
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值