AttributeError: Can‘t pickle local object 的解决方法

耗时许久,终于在不断理解和试错中解决了此Bug!!

原代码是这样的:

def setup_generator(processes=None, batch_size=10, cg=None):

    def init_worker():
        signal.signal(signal.SIGINT, signal.SIG_IGN)

    global pool
    try:
        pool.terminate()
    except:
        pass

此时会出现multiprocessing.Pool()传来的类似于can’t pickle的报错。

于是我按照参考文献的思路,将引起错误的函数以及相关变量提到了外面,如下面的代码所示:

# 提到外面的 worker 函数
def init_worker():
    signal.signal(signal.SIGINT, signal.SIG_IGN)

# 在外面定义 pool 变量
global pool
pool = None

def setup_generator(processes=None, batch_size=10, cg=None):

    global pool
    try:
        pool.terminate()
    except:
        pass

然后就很神奇地Debug了。

供大家参考,祝大家少遇Bug!

参考文献:彻底解决python多进程can‘t pickle问题_python_七哥地盘-GitCode 开源社区 (csdn.net)icon-default.png?t=N7T8https://gitcode.csdn.net/65e7d05c1a836825ed788f85.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTI0NzU3NSwiZXhwIjoxNzEwNjgyODMxLCJpYXQiOjE3MTAwNzgwMzEsInVzZXJuYW1lIjoibTBfNjY5NzcyNTcifQ.5VNFs2Pgx4evfxv0opiiy4RZ3fepTR5CtCIzzbT9tZI

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一溪风月_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值