Python——multiprocessing报错:TypeError: cannot pickle ‘_thread.lock‘ object

多进程报错

Traceback (most recent call last):
  File "C:\Users\miaochangbin\PycharmProjects\eduCrawler\main.py", line 138, in <module>
    p.start()
  File "D:\Program Files\python\lib\multiprocessing\process.py", line 121, in start
    self._popen = self._Popen(self)
  File "D:\Program Files\python\lib\multiprocessing\context.py", line 224, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
  File "D:\Program Files\python\lib\multiprocessing\context.py", line 327, in _Popen
    return Popen(process_obj)
  File "D:\Program Files\python\lib\multiprocessing\popen_spawn_win32.py", line 93, in __init__
    reduction.dump(process_obj, to_child)
  File "D:\Program Files\python\lib\multiprocessing\reduction.py", line 60, in dump
    ForkingPickler(file, protocol).dump(obj)
TypeError: cannot pickle '_thread.lock' object

原因

  • 在启动子进程时,会将所有输入参数经过信息序列化后传递到子进程中,而报错就是在信息进行序列化时候。
  • 而这边信息报错传递子进程的对象信息(属性以及属性的属性)。
  • 因此:说明代码中有类或者对象无法被序列化,但是被传入子进程中,去除对应无法实例化的代码,或者将其放在子进程中初始化即可。

参考文章:

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值