写入文件的运行时影响
Runtime impact of writing to a file
在此函数中,我首先按每个条目的第一个元素对列表进行排序,然后按第四个元素对列表进行排序,然后将每个条目写入文件,如下所示:
def sort_and_readToFile(lst):
address = r"...\prospect\sortedSamples"
lst.sort(key=lambda x: (x[0],x[3]))
with open(address, "w") as f:
for item in lst:
f.write(str(item[0]) + ',' + str(item[1]) + ',' + str(item[2]) + ',' + str(item[3]) + '\n')
f.close()
在这种情况下写入文件对运行时有何影响?大部分运行时是否用于写入文件(而不是对列表进行排序)?
让我们测量一下两者所花费的时间,看看:-
def sort_and_readToFile(lst):
address = r"..\prospect\sortedSamples"
start_time_sort_ms = time.perf_counter() * 1000
lst.sort(key=lambda x: (x[0], x[3]))
print("Time taken to sort the list = ", (time.perf_counter() * 1000) - start_time_sort_ms)
start_time_write_ms = time.perf_counter() * 1000
with open(address, "w") as f:
for item in lst:
f.write(str(item[0]) + ',' + str(item[1]) + ',' + str(item[2]) + ',' + str(item[3]) + '\n')
print("Time taken to write to file = ", (time.perf_counter() * 1000) - start_time_write_ms)
sort_and_readToFile(['3343', '4223', '2454', '1664', '7666', '3555'])
我得到的输出是:-
Time taken to sort the list in ms = 0.008400000000008845
Time taken to write to file in ms = 0.32550000000000523
现在,所花费的时间当然取决于列表中元素的数量和您使用的机器。但重要的一点是 对列表进行排序比写入文件 快得多(在本例中几乎快 40 倍)。这是因为排序是对RAM的操作,写入是对磁盘的操作(顺便说一下,我使用SSD,比普通HDD快,但你明白了)。
顺便说一下,由于您使用 with
打开文件,因此可以避免 f.close()
.
在此函数中,我首先按每个条目的第一个元素对列表进行排序,然后按第四个元素对列表进行排序,然后将每个条目写入文件,如下所示:
def sort_and_readToFile(lst):
address = r"...\prospect\sortedSamples"
lst.sort(key=lambda x: (x[0],x[3]))
with open(address, "w") as f:
for item in lst:
f.write(str(item[0]) + ',' + str(item[1]) + ',' + str(item[2]) + ',' + str(item[3]) + '\n')
f.close()
在这种情况下写入文件对运行时有何影响?大部分运行时是否用于写入文件(而不是对列表进行排序)?
让我们测量一下两者所花费的时间,看看:-
def sort_and_readToFile(lst):
address = r"..\prospect\sortedSamples"
start_time_sort_ms = time.perf_counter() * 1000
lst.sort(key=lambda x: (x[0], x[3]))
print("Time taken to sort the list = ", (time.perf_counter() * 1000) - start_time_sort_ms)
start_time_write_ms = time.perf_counter() * 1000
with open(address, "w") as f:
for item in lst:
f.write(str(item[0]) + ',' + str(item[1]) + ',' + str(item[2]) + ',' + str(item[3]) + '\n')
print("Time taken to write to file = ", (time.perf_counter() * 1000) - start_time_write_ms)
sort_and_readToFile(['3343', '4223', '2454', '1664', '7666', '3555'])
我得到的输出是:-
Time taken to sort the list in ms = 0.008400000000008845
Time taken to write to file in ms = 0.32550000000000523
现在,所花费的时间当然取决于列表中元素的数量和您使用的机器。但重要的一点是 对列表进行排序比写入文件 快得多(在本例中几乎快 40 倍)。这是因为排序是对RAM的操作,写入是对磁盘的操作(顺便说一下,我使用SSD,比普通HDD快,但你明白了)。
顺便说一下,由于您使用 with
打开文件,因此可以避免 f.close()
.