为什么打开多个文件需要这么长时间?

时间:2017-11-30 23:40:23

标签: python performance file-io

我有一个文件夹foo,其中包含数千.html个文件,每个文件大约300 Kb。以下是我打开它们的方法:

import os
import time

folder_name = 'foo'
for file_name in os.listdir(folder_name):
    t = time.time()
    with open(os.path.join(folder_name, file_name)) as f:
        print(time.time() - t, 'seconds to open', file_name)

这是我得到的输出:

1.6057319641113281 seconds to open 1.html
1.3181514739990234 seconds to open 2.html
1.1490132808685303 seconds to open 3.html
1.2970092296600342 seconds to open 4.html
1.0074846744537354 seconds to open 5.html
1.5122349262237549 seconds to open 6.html
1.1730327606201172 seconds to open 7.html
1.9992561340332031 seconds to open 8.html

我有一个SSD,我很惊讶它打开一个小文件需要一秒钟。

这是正常的吗?如果没有,可以采取哪些措施加快速度?

1 个答案:

答案 0 :(得分:1)

编辑:我错了。由于您在调用print()之前计算了时差,因此print()中的任何缓慢都不会影响计算的时间(感谢@DavidZ)。

我可能错了,但print输出会减慢你的时间。为了获得更好的想法,请在循环浏览文件夹之前和之后立即开始计时,例如

import os
import time

folder_name = 'foo'
t = time.time()
for file_name in os.listdir(folder_name):
    with open(''.join([folder_name, '/', file_name])) as f:
        # doing something with the files
print(time.time() - t, 'seconds to read entire folder')