memoize asyncio python函数调用

aiomemoize的Python项目详细描述


艾米莫泽CircleCITest Coverage

记住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']

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何解决Java泛型通配符/抽象歧义问题?   javacom。苹果eawt我到底应该安装什么   在屏幕旋转后,java片段的目标不在片段管理器中   java测试数据库连接超时   java当子类构造函数的超类具有较少的参数时,如何向其添加更多参数?   部署为jetty中部署为服务的两个应用程序设置不同的java系统属性   发送带有唯一附件的批量电子邮件(服务、java或api)   java如何在Android上使用AlarmManager在所需日期显示Toast   java有没有办法在eclipse中过滤工作区引用(Ctrl+Shift+G),这样就不会看到“潜在匹配”?   java设置textview数组的上下文   java为什么滚动页面时不使用鼠标滚动光标轨迹?   java在运行时更改拓扑属性   java自管理单调递增密钥或系统的时间戳   直接向扬声器发送音频