with

with是一种上下文管理协议,目的是从流程图中把try,except和finally关键字以及资源分配释放相关代码统统去掉,简化try-excepet-finally的处理流程
with确保了不管过程中是否发生异常都会执行必要的清理,释放资源,例如:文件使用后自动关闭等

1.语法格式

with expression [as target]:.....

2.用法探究

学习自博客:
https://www.cnblogs.com/wwbplus/p/11329541.html

import numpy as np
import os获取当前文件的目录current_path=os.getcwd()
print(current_path)
#path1=os.path.abspath(__file__) #注意了,__file__只有在脚本程序中才会有定义,在终端或交互式中是没有定获取当前文件的路径path2=os.path.dirname(os.path.abspath(__file__)) #包含了当前脚本的文件名a=np.array([1,2])np.save(current_path+'/a.npy',a)**使用with打开a.npy**a=np.load(current_path+'/a.npy')with np.load(current_path+'/a.npy') as np_load: #没有这种用法哦!,with只能打开txt文件,那么下面换成txt试试喽print(np_load())np.savetxt(current_path+'/a.txt',a)with open(current_path+'/a.txt') as fp: #整个文件的读取print(fp.read())
输出:
1.000000000000000000e+00
2.000000000000000000e+00with open(current_path+'/a.txt') as fp: #整个文件的读取print(fp.readline())print(fp.readlines()) #读取下一行,但是输出的是列表print(fp.readlines()) #输出空列表print(fp.readline()) #没有能输出的了
输出:
1.000000000000000000e+00['2.000000000000000000e+00\n']
[]b=np.array([[1,2],[3,4]])np.savetxt(current_path+'/b.txt',b)with open(current_path+'/b.txt'),open(current_path+'/a.txt') as fp,\
open(current_path+'/b.txt','w') as fw: #with里面输入再多的open也只会执行最后一个openfw.write('aaaa')print(fp.read())
输出:
1.000000000000000000e+00
2.000000000000000000e+00with open(current_path+'/b.txt') as fp: #测试b.txt是否已经被全部修改了print(fp.read())
输出:
aaaawith open(current_path+'/a.txt') as fp, open(current_path+'/b.txt') as fp2:for i in fp: #可以用for的形式来替换掉.readline()print(i)print(fp2.readline())
输出:
1.000000000000000000e+00aaaa
2.000000000000000000e+00with open(current_path+'/b.txt') as fp2:for i in fp2: #可以用for的形式来替换掉.readline()print(i)
输出:
aaaa

3.在TensorFlow中的应用

不使用with的 Session

import tensorflow as tfa = tf.constant([1.0, 2.0])
b = tf.constant([3.0, 4.0])
c = a * b #点乘sess = tf.Session() #创建会话print(sess.run(c))
sess.close() #手动关闭会话
输出:
[3. 8.]

使用with的 Session

import tensorflow as tfa = tf.constant([1.0, 2.0])
b = tf.constant([3.0, 4.0])
c = a * bwith tf.Session() as sess: #使用with就可以不同手动关闭会话了print(sess.run(c))
输出:
[3. 8.]

补:Tensorflow gpu/cpu的指定配置

from tensorflow.python.client import device_libprint(device_lib.list_local_devices())import time
import tensorflow as tf
for d in ['/device:CPU:0','/device:GPU:0']: #用cpu和gpu分别测试了速度with tf.device(d):start=time.time()a=tf.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape=[2,3])b=tf.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape=[3,2])c=tf.matmul(a,b)end=time.time()consuming_time=tf.convert_to_tensor(end-start) #必须要转成tensor变量sess=tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(sum))
print(sess.run(consuming_time))

本人现在的研究方向是:
图像的语义分割,如果有志同道合的朋友,可以组队学习
haiyangpengai@gmail.com qq:1355365561

python中的with使用方法[探索5]相关推荐

  1. python中的isinstance()使用方法[探索2]

    isinstance 学习的是以下博客: https://blog.csdn.net/HS_blog/article/details/81396664 1.功能 判断python中的设定函数的类型 2 ...

  2. python中的super使用方法[探索4]

    super super是一种子类调用父类的方法,在单继承时,super获取的类刚好是父类,但多继承时,super获取的是继承顺序中的下一个类. 学习自博客: https://www.jianshu.c ...

  3. python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...

    本文实例分析了Python中的对象,方法,类,实例,函数用法.分享给大家供大家参考.具体分析如下: Python是一个完全面向对象的语言.不仅实例是对象,类,函数,方法也都是对象. class Foo ...

  4. python grpc 并发_在Python中使用gRPC的方法示例【h】

    本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下: 使用Protocol Buffers的跨平台RPC系统. 安装 使用 pip gRPC由两个部分构成,grpcio 和 gRP ...

  5. python中列表的sort方法_python中列表的sort方法使用详解

    内容简介:python中列表的sort方法使用详解 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的. 排序,数字.字符 ...

  6. python中立方表示_在Python中表示一个对象的方法

    在 Python 中一切都是对象.如果要在 Python 中表示一个对象,除了定义 class 外还有哪些方式呢?我们今天就来盘点一下. 0x00 dict 字典或映射存储 KV 键值对,它对查找.插 ...

  7. python中使用grpc方法示例_在Python中使用gRPC的方法示例

    本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下: 使用Protocol Buffers的跨平台RPC系统. 安装 使用 pip pip install grpcio pip i ...

  8. python list sort by,python中List的sort方法指南

    简单记一下python中List的sort方法(或者sorted内建函数)的用法. List的元素可以是各种东西,字符串,字典,自己定义的类等. sorted函数用法如下: sorted(data, ...

  9. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

最新文章

  1. vue插槽样式_Vue为什么要有插槽
  2. oracle database 9i/10g/11g 编程艺术 源代码下载
  3. 远程研发能有多高效?手淘新版本上线只用了5天!
  4. this关键字+super关键字
  5. 数据结构基础:图结构的学习笔记
  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]38.隐蔽信道和侧信道的区别
  7. Mysql数据库的分离和附加转
  8. java 安卓视频播放器_java - 学习做一个安卓视频播放器,有一些小问题!忘大家请教...
  9. CentOS安装五笔输入法
  10. 数组元素替换_Linux Shell 通俗简要的讲解数组操作
  11. python正则怎么取反_第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反...
  12. 斑能不能彻底去掉_鸡脖、猪脖子上有淋巴结,会有大量毒素、病菌?还能不能放心吃?...
  13. linux内核源码分析系列文章汇总
  14. 南航计算机考研专业课复习重点
  15. win 10 自动删除解压的文件(关闭 Windows defender)
  16. 调用dll时出现“Unhandled exception 堆已损坏(heap corruption)“异常解决方法
  17. wifi网络为什么总是断线 (by quqi99)
  18. C语言基础:求解一元二次方程
  19. flink的内存管理器MemoryManager
  20. 企业如何选择和配置服务器解决方案(2023年版本)

热门文章

  1. CPU启动计算机,如何加快双核CPU计算机win7启动速度
  2. mysql cluster常见问题访问_MySQL Cluster的常见问题
  3. 小程序 getphonenumber_小程序入门,看这一篇就够了!
  4. 修改windows cmd f2快捷_解放你的右手,实测12个超好用的自带快捷键
  5. 计算机科学与技术大学教程,21世纪高等学校计算机科学与技术规划教材:大学计算机基础教程...
  6. c语言 前置声明,我这个C代码 为什么加了函数前置声明反而会出错,不加倒可以...
  7. Wide-Baseline Image Matching Using Line Signatures
  8. Matplotlib库入门
  9. 【机器学习-西瓜书】七、贝叶斯分类器
  10. An error occured executing the microsoft VC++ runtime installer