我有一个Python脚本,它从源文件中读取一行数据,对该数据执行一组计算,并将这些计算的结果写入输出文件。该脚本当前编码为从源文件一次读取一行,直到到达源文件的末尾。
我可以通过从源文件中读取多行,执行计算并将结果写入输出文件来改善脚本的执行时间吗?
我是否因为拥有大量读/写实例而受到性能影响?
由于更改代码的困难,我问的问题不是进行测试。
答案 0 :(得分:1)
在大多数情况下,在内存中执行操作将具有比相同操作更好的性能,但具有磁盘访问权限。因此,我可以看到与这种情况相关的两个选项可能如下所示。
lines = []
with open("sourcefile.txt", 'r') as fd:
lines = fd.readlines()
# Do work to each line.
for line in lines:
doWork(line)
或
with open('sourcefile.txt', 'r') as fd:
line = fd.read()
doWork(line)
第一个示例代码应该运行得更快,因为一旦所有文件IO完成,所有工作都在内存中完成并独立于文件IO。
答案 1 :(得分:0)
只有通过实际测量才能回答这个问题。
您应该创建一个简单的测试场景,它将在不进行实际计算的情况下读取和写入类似类型和大小的文件。
您可以进行分析和检查,花费在I / O操作上的时间以及处理内容的程度。结果可能是,即使I / O以光速运行,也不会显着提高性能。
在没有测量时间的情况下,人们只能猜测并且估计是:
就个人而言,我宁愿保留当前简单的逐行处理,除非性能和收益真的很重要。