memoize asyncio python函数调用
aiomemoize的Python项目详细描述
艾米莫泽
记住asyncio python调用。对于每个参数集,失效都是手动/显式的,尽管引发的异常是not缓存的。这可以用于协同程序和返回承诺的函数。
安装
pip install aiomemoize
用法
对于其参数是散列的协程,可以通过将其传递给memoize
来创建memoized版本。这将返回memoized函数的一个元组,并返回一个按项使缓存失效的函数。
例如,下面的
importasynciofromaiomemoizeimportmemoizeasyncdefmain():memoized,invalidate=memoize(coro)results=awaitasyncio.gather(*[memoized('a'),memoized('a'),memoized('b'),])print(results)invalidate('a')results=awaitasyncio.gather(*[memoized('a'),memoized('a'),memoized('b'),])print(results)awaitmemoized('a')asyncdefcoro(value):print('Inside coro',value)awaitasyncio.sleep(1)returnvalueloop=asyncio.get_event_loop()loop.run_until_complete(main())loop.close()
将输出
Inside coro a
Inside coro b
['a', 'a', 'b']
Inside coro a
['a', 'a', 'b']