Python多线程memoization,可以吗?如果是,怎么办?
最佳答案
当然可以。事实上,我认为直接的单线程实现应该工作得很好,假设在使用相同参数并行调用相同函数的情况下可以执行一些冗余计算是可以接受的。
为了说明该场景,您的内存过程可能看起来像这样:
if args not in cache:
cache[args] = func(args)
return cache[args]
如果两个线程同时使用相同的 args
到达这个位置,它们可能会同时调用 func(args)
,而这样会更高效只调用一个计算实例,另一个实例等待第一个实例完成。这对您来说可能不是什么大问题。如果是,使用锁(来自 threading
模块)来阻止具有匹配参数的线程的解决方案应该非常简单。
关于Python多线程内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4710266/