Python многопоточная памятка
Python многопоточное запоминание, это возможно? Если так, то как?
1 ответ
Конечно, это возможно. На самом деле, я думаю, что простая однопоточная реализация должна работать просто отлично, предполагая, что допустимо, чтобы некоторые избыточные вычисления могли выполняться в случае, когда одна и та же функция вызывается с одинаковыми параметрами параллельно.
Для иллюстрации сценария ваша процедура запоминания будет выглядеть примерно так:
if args not in cache:
cache[args] = func(args)
return cache[args]
Если два потока попали в это место одновременно args
они оба могут ссылаться func(args)
параллельно, в то время как было бы более эффективно вызывать только один экземпляр вычисления, а другой - ждать завершения первого. Это не может быть слишком большой проблемой для вас. Если это так, решение с использованием замков (из threading
модуль) блокировать потоки с совпадающими аргументами должно быть довольно просто.