【发布时间】:2021-01-22 07:41:54
【问题描述】:
我正在使用a LRU cache 来加快一些相当繁重的处理。它运行良好并且大大加快了速度。不过……
当我使用多进程时,每个进程都会创建自己的单独缓存,并且同一事物有 8 个副本。这似乎不是问题,直到盒子内存不足并因此发生坏事......
理想情况下,我的应用程序只需要大约 300 个项目的缓存大小,1*300 将适合我必须使用的 7GB,但 8*300 不适合。
如何让所有进程共享同一个缓存?
【问题讨论】:
-
Python
multiprocessing模块在 sharing state between processes 上有一个部分。 -
您可以选择进程外缓存吗?您可以在缓存状态上使用 pickle 并将其存储在 redis 中吗?
-
@sam 实际上,
Manager似乎可以共享dict,我怀疑这是内部的 lfu 缓存。我想我希望以前有人破解过这个问题来解决这个问题,所以我不必这样做;-) -
@TokenMacGuy 喜欢你的想法,但它的强度很高(每毫秒数千次),所以提到酸洗让我立即预判它太慢了。
-
有没有办法用 gunicorn + bottle 启动的不同进程来做到这一点?