serialize instances of scipy rv_continuous and rv_discrete subclasses
I am using the distribution classes in scipy.stats.distributions
and need to serialize instances for storage and transfer. These are quite complex objects, and they don't pickle. I am trying to develop a mixin class that makes objects pickle-able, so that I can work with remixed subclasses that otherwise behave just like the objects from scipy.stats. The more I investigate the problem, the more confused I become, and I wonder if I am missing an obvious way to do this.
I have read a related question on how to pickle instance methods, but this is only part of the overall solution that I need and may not even be necessary. I have experimented with writing pickle support functions that closely follow the __init__
method and serialize the object as arguments to __init__
, but this seems brittle, especially when subclasses can define arbitrary subclass-specific behavior in __init__
.
Does someone have 开发者_C百科an elegant solution to share?
Update: I found a Python bug report with an example of registering pickle support functions with the copy_reg
module to pickle instance methods. For my case, the instance method attributes were the only blockers. However, I would still like to know if there is a way to use a mixin class to solve this problem, because copy_reg
has global effects which may not be desireable in all situations.
精彩评论