我有段代码,逻辑总结起来比较简单:
@functools.cache
def a_long_time_calc(cis):
...
for n in (...):
cis = tuple(some_dic.keys())
# cis 有较不小概率是会重复的
calc_res = a_long_time_calc(cis)
another_long_time_proc(...)
...
因为for n 循环跑的次数比较多, 而且cis本身也不短,导致随程序运行,内存占用会越来越多,然后被系统杀死,用memory_profiler做prof看的结果就是cis = tuple(...)这里不停的占用内存,要命的地方是, some_dic是从数据库里根据n实时抓出来的,他的keys没有办法做成预定义的。在运行一段时间之后主动调用gc.collect也没有效果。
请教一下, 有没有办法在运行一段时间之后把cis这个内存释放掉啊。
--
FROM 221.224.37.*