Python多线程memoization,有可能吗?如果是这样,怎么样?
答案 0 :(得分:2)
当然有可能。实际上,我认为直接的单线程实现应该可以正常工作,假设在使用相同参数并行调用相同函数的情况下可以执行某些冗余计算是可以接受的。
有关该场景的说明,您的memoization过程可能如下所示:
if args not in cache:
cache[args] = func(args)
return cache[args]
如果两个线程同时使用相同的args
到达此位置,则它们可以并行调用func(args)
,而调用一个计算实例和另一个要等到第一个完成。这对你来说可能不是什么大问题。如果是,使用锁(来自threading
模块)来阻止具有匹配参数的线程的解决方案应该非常简单。