for循环减慢python

时间:2018-01-30 20:38:24

标签: python

我试图运行

f = open("FurElise.mp3", "rb")
for x in f.read():
    print x

尝试读取测试mp3文件中的每个字符。但是,我注意到使用此方法的时间比print(f.read())长。使用print(f.read())将在~10秒内输出整个文件,但使用上述方法可能需要几分钟。有谁知道这是为什么,或者是否有更快的方式逐个循环遍历文件?

1 个答案:

答案 0 :(得分:1)

Python已经为你的循环做了很多事情,因为在调用f.read()并将其存储在内存中之后,它首先需要为它设置一切。然后需要为文件的每个字节调用print()函数,当无循环方式时,它调用一次。调用函数不是魔术,python为它创建一个堆栈帧(它为其变量分配一些内存),然后执行它。同样,打印功能可以打印您的对象。它可能会调用其他函数来格式化参数等... 因为所有这些工作都是针对每个字节完成的,而不是一次,所以当然需要更多的时间。