假设有一个包含类 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.