Python多线程记忆化

3

Python多线程记忆化,是否可行?如果是,如何实现?


9
可以的。你尝试过什么? - John La Rooy
是的,这是可能的,可能涉及锁和队列,搜索缓存会有帮助。 - TryPyPy
1个回答

3

当然可以。实际上,我认为直接的单线程实现应该可以很好地工作,假设在并行调用相同参数的函数时允许进行一些冗余计算。

为了说明这种情况,你的备忘录程序可能会像这样:

if args not in cache:
    cache[args] = func(args)
return cache[args]

如果两个线程在相同的时间使用相同的参数来访问这个位置,它们可能会并行地调用func(args),而更高效的方法是只调用一次计算实例,然后让另一个线程等待直到第一个完成。如果这不是太大的问题,那么使用锁(来自threading模块)来阻塞具有匹配参数的线程的解决方案应该非常简单。

1
@gnibbler:我还没有尝试过什么。我和一个朋友讨论了一下,他正在使用记忆化来加速一些大型人工智能计算,但发现他的某些输入在他的计算机上仍然需要很长时间才能计算出来。由于这是一个多核计算机,我建议他尝试将应用程序多线程化,但他不确定是否能够在不搞乱他的记忆化的情况下做到这一点。因此,出于好奇,我决定在这里问问专家们是否确实可能。看起来是可以的...这个社区的人们总是用他们的解决方案让我惊叹。 :) - user578086

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接