gpt4 book ai didi

python - 如何在多个进程之间共享缓存?

转载 作者:太空狗 更新时间:2023-10-29 18:31:40 27 4
gpt4 key购买 nike

我正在使用 a LRU cache加快一些相当繁重的处理。它运作良好并大大加快了速度。然而……

当我进行多进程时,每个进程都会创建自己的独立缓存,并且同一事物有 8 个副本。这似乎不是问题,直到盒子内存不足并且结果发生坏事......

理想情况下,我的应用程序只需要大约 300 个项目的缓存大小,1*300 将适合我必须使用的 7GB,但 8*300 不适合。

如何让所有进程共享同一个缓存?

最佳答案

我相信您可以使用 Manager 在进程之间共享字典。这在理论上应该让您对所有功能使用相同的缓存。

但是,我认为更明智的逻辑是让一个进程通过在缓存中查找查询来响应查询,如果它们不存在,则将工作委托(delegate)给子进程,并且在返回之前缓存结果。你可以很容易地做到这一点

with concurrent.futures.ProcessPoolExecutor() as e:
@functools.lru_cache
def work(*args, **kwargs):
return e.submit(slow_work, *args, **kwargs)

请注意,work 将返回 Future 对象,消费者必须等待这些对象。 lru_cache 将缓存 future 的对象,以便它们自动返回;我相信您可以多次访问他们的数据,但现在无法对其进行测试。

如果您不使用 Python 3,则必须安装 concurrent.futuresfunctools.lru_cache 的向后移植版本。

关于python - 如何在多个进程之间共享缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13693906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com