在Python > 3上使用带有部分的多处理和映射失败的脚本,在2.7上工作正常,不能pickle '_thread.lock'。
这个问题涉及到Python的多进程编程和pickle模块的使用。在Python中,pickle模块用于序列化和反序列化对象,将对象转换为字节流以便存储或传输,或者将字节流转换为对象。
在Python 2.7中,pickle模块默认使用的是cPickle模块,而在Python 3中,pickle模块已经被优化并成为了标准库的一部分。这导致在Python 3中使用pickle时可能会出现与Python 2.7不兼容的情况。
在给定的问题中,脚本在Python 2.7上正常工作,但在Python 3上出现了多处理和映射失败的问题,并且报错信息中提到了'_thread.lock'无法pickle。
这个问题的原因是Python 3中的多进程模块对于某些对象的pickle支持不完整。'_thread.lock'是Python中的线程锁对象,它在Python 3中的pickle支持不完整,因此在多处理和映射过程中无法正确地序列化和反序列化。
为了解决这个问题,可以尝试以下几种方法:
总结起来,解决在Python > 3上使用带有部分的多处理和映射失败的脚本,在2.7上工作正常,不能pickle '_thread.lock'的问题,可以尝试避免pickle '_thread.lock'对象、使用更高级的多进程模块或者使用其他序列化方法来解决。具体的解决方法需要根据实际情况进行选择和调整。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云