第一部分:python中with...as...的用法
本文转自https://blog.csdn.net/weixin_42118374/article/details/80437050,纯属为了个人收藏查阅用,如侵权,请联系删除,谢谢。
结论就是:with是一个控制流语句,跟if/for/while/try之类的是一类的,with可以用来简化try finally代码,看起来可以比try finally更清晰。
这里新引入了一个"上下文管理协议"context management protocol,实现方法是为一个类定义__enter__和__exit__两个函数。
with expresion as variable的执行过程是,首先执行__enter__函数,它的返回值会赋给as后面的variable,想让它返回什么就返回什么,只要你知道怎么处理就可以了,如果不写as variable,返回值会被忽略。
然后,开始执行with-block中的语句,不论成功失败(比如发生异常、错误,设置sys.exit()),在with-block执行完成后,会执行__exit__函数。
这样的过程其实等价于:
try:
执行 __enter__的内容
执行 with_block.
finally:
执行 __exit__内容
只不过,现在把一部分代码封装成了__enter__函数,清理代码封装成__exit__函数。
第二部分:Tensorflow中with tf.Session() as sess用法详解
本文转自https://blog.csdn.net/wwwlyj123321/article/details/86064772,纯属为了个人收藏查阅用,如侵权,请联系删除,谢谢。
因此,原因就是:
一个Session可能会拥有一些资源,例如Variable或者Queue。当我们不再需要该session的时候,需要将这些资源进行释放。有两种方式,
调用session.close()方法;
使用with tf.Session()创建上下文(Context)来执行,当上下文退出时自动释放。
另外两篇有用的博客:
https://www.cnblogs.com/lienhua34/p/5998853.html
https://blog.csdn.net/qq_36666115/article/details/80017050
大家写的真好呀!