繁体   English   中英

Python如何在对象中查找所有无法修复的项目

[英]Python how to find all unpickle-able items inside an object

我有一个使用多处理程序。 我正在尝试使用multiprocessing.Queue()在每个进程之间共享信息。 此队列不处理不可拾取的项目。 我已经做了一些鸭子测试,以检查对象是否可拾取,然后手动检查该对象以找到不可拾取的物品。 除了手动执行此操作外,还有其他方法可以找到所有无法拾取的项目并将其删除吗? 找到无法拾取的项目的原因是可以将其删除,因为该对象不会有问题传递到队列中。

这是简化的代码版本:

# Test that object is pickle-able so results can be transferred
# Exception will be raised if not pickle-able
pickle.dumps(shareInfoObject)

mpQueue.put_nowait(shareInfoObject)

我不确定“查找所有不易损坏的物品”是什么意思。 这是一个检查给定对象是否可腌制的函数:

import pickle
def pickleable(obj):
    try:
        pickle.dumps(obj)
    except pickle.PicklingError:
        return False
    return True

# Test
import os
print(pickleable(42))  # True
print(pickleable(os))  # False

在Python 2中,可能会得到与pickle.PicklingError不同的错误,因此,更健壮(尽管不太谨慎)的选项是只使用except:捕获任何异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM