小白请教各位大神一个关于单例模式的问题

2016-12-21 16:38:25 +08:00
 jotsai
有个类,在子进程里到处被 import ,要求子进程里创建的实例始终为同一个,但不同的子进程里的实例不一样,请教各位大神如何解决?
1573 次点击
所在节点    Python
5 条回复
sleshep
2016-12-21 16:40:14 +08:00
都不同进程了,除非写__getstate__方法用来 pickle ,否则没法搞
knightdf
2016-12-21 16:55:23 +08:00
这已经不是单例模式做的事了,参考进程共享数据把
简单可以用外置数据,非要 python 单例对象的话,可以试试代理对象
jotsai
2016-12-21 19:50:08 +08:00
@sleshep
@knightdf
可能我表述没到位,我不需要跨进程的单例,我需要的是跨模块的单例
我照着 stackoverflow 的例子实现了一个装饰器,但是每次在别的模块里 import 之后,装饰器用来保存实例的字典就重置了……
开始怀疑自己的思路是不是跑偏了=。=
enenaaa
2016-12-22 11:08:14 +08:00
代码贴出来呗
jotsai
2016-12-23 13:02:30 +08:00
@enenaaa
@knightdf
@sleshep
用 pickle 测试了一下,目前来看是可行的,不过我遇到一个问题,当我用装饰器包装类的时候,这个类就不能被 pickle 序列化了,会报 can ‘ t pickle class x.y it's not the same object as x.y

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/329196

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX