Python многопоточная памятка

Python многопоточное запоминание, это возможно? Если так, то как?

1 ответ

Решение

Конечно, это возможно. На самом деле, я думаю, что простая однопоточная реализация должна работать просто отлично, предполагая, что допустимо, чтобы некоторые избыточные вычисления могли выполняться в случае, когда одна и та же функция вызывается с одинаковыми параметрами параллельно.

Для иллюстрации сценария ваша процедура запоминания будет выглядеть примерно так:

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

Если два потока попали в это место одновременно argsони оба могут ссылаться func(args) параллельно, в то время как было бы более эффективно вызывать только один экземпляр вычисления, а другой - ждать завершения первого. Это не может быть слишком большой проблемой для вас. Если это так, решение с использованием замков (из threading модуль) блокировать потоки с совпадающими аргументами должно быть довольно просто.

Другие вопросы по тегам