from contextvars import ContextVar
import asyncio
import random
cv = ContextVar('cv')
async def waiting_func(name):
print(f'{name} Before sleep: {cv.get()}')
await asyncio.sleep(random.random())
print(f'{name} After 1 sleep: {cv.get()}')
await asyncio.sleep(random.random())
print(f'{name} After 2 sleep: {cv.get()}')
async def task(name):
await waiting_func(name)
async def main():
for name in ('first', 'second', 'third'):
cvt = cv.set(name)
await task(name)
cv.reset(cvt)
if __name__ == '__main__':
asyncio.run(main())
相关文章
- python3.7 contextvars在asyncio使用的
- 如何使用 window.open() 处理ajax请求返回的url: 在本页面打开并防止浏览器拦截
- 设计模式-状态模式在Java中的使用示例-信用卡业务系统
- Python在终端通过pip安装好包以后,在Pycharm中依然无法使用的解决办法
- ActiveMQ第三弹:在Spring中使用内置的Message Broker
- Winio驱动在64位windows下无法使用的解决方法
- 一个Time TodoList实例了解redux在wepy中的使用
- Effective C++ 条款15、16 在资源管理类中提供对原始资源的访问||成对使用new 与 delete要采取相同形式
- 默认情况下是未勾选 Add Python 3.6 to PATH,在windows下安装python之后,系统并不会自动添加相应的环境变量。此时不能在命令行或cmd里直接使用python命令。
- 脑子使用指南——Python3.7版本下Pyinstaller的安装