Python多线程记忆化,是否可行?如果是,如何实现?
Python多线程记忆化,是否可行?如果是,如何实现?
当然可以。实际上,我认为直接的单线程实现应该可以很好地工作,假设在并行调用相同参数的函数时允许进行一些冗余计算。
为了说明这种情况,你的备忘录程序可能会像这样:
if args not in cache:
cache[args] = func(args)
return cache[args]
func(args)
,而更高效的方法是只调用一次计算实例,然后让另一个线程等待直到第一个完成。如果这不是太大的问题,那么使用锁(来自threading
模块)来阻塞具有匹配参数的线程的解决方案应该非常简单。