假设有一个包含类 C 实例的函数 foo:
def foo(x):
bar = C()
return bar(x)
foo 这个函数会被某个业务反复调用(比如每分钟 10,000 次),有什么办法能够让类 C 的实例化过程(bar = C())只在第一次被调用的时候执行一次呢?换句话说,第一次调用生成 bar 对象后,如何把它缓存住,让第二次及后续调用都直接载入这个缓存对象呢?
有几个限制:
1 、C 是在某个第三方库中实现的,因此没法修改源码让 C 成为单例;
2 、函数 foo 的参数格式不允许修改;
3 、foo 可能会被 a.py 调用,也可能被 b.py 调用,我希望在这两个 py 文件执行的过程中 bar 对象是独立存在的,因此好像不适合把 foo 定义为 global?
如果暂且不考虑限制 3,有没有什么比较好的方法实现?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.