在使用Python读inp文件时,之前用的readlines方法,但是readlines方法占用内存会比较大,规模较小时还行,如果inp文件中网格数比较大,效率就会降低。
Python读文件有几种方式,1. readlines;2. readline; 3. 文件迭代方式。
内存占用情况用memory_profiler包来监测,测试代码如下(第4行的@会导致Python代码粘过来识别成其他语言了,所以还是贴图吧):
关注技术邻官网,学习更多免费工科课程
测试结果如下图所示,可知使用readlines会占用较大的内存,这是以为readlines将文件中的所有行保存为一个列表,而第2、3中方法使用的是遍历的方法,占用内存会比较小。另外,还可以通过监测程序运行时间来对比这三种方法的执行速度,个人认为第三种要比前两种快,但是没有测试,如果有兴趣可以利用datetime模块测试一下。
关注技术邻官网,学习更多免费工科课程
在平时使用中个人推荐第三种方式。并且将print语句改为“yield line”,就是一个生成器,调用一次Getlines3就获得文件中下一行内容,非常方便,代码量也比readlines或readline要少。